Einzelnen Beitrag anzeigen

Benutzerbild von Net7
Net7

Registriert seit: 22. Jun 2004
Ort: Lauenburg
161 Beiträge
 
Delphi 7 Professional
 
#1

Record vom Client zum Server schicken mit Socketkomponenten

  Alt 29. Apr 2005, 16:27
Hier mal eine Möglichkeit die auch jeder versteht, und die einfach nachzuvollziehen ist.

Benötigte Komponenten 2x Memo, 1x Clientsocktet, 1x Serversocket.

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ScktComp;

type
  TForm1 = class(TForm)
    ClientSocket1: TClientSocket;
    Memo1: TMemo;
    ServerSocket1: TServerSocket;
    Memo2: TMemo;
    CheckBox1: TCheckBox;
    procedure CheckBox1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure ClientSocket1Connect(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure ServerSocket1ClientWrite(Sender: TObject;
      Socket: TCustomWinSocket);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

type
  CTDaten = record //Record des Clienten
    Name: string[60];
    Zahl: integer;
  end;

type
  STDaten = record // leerer Record des Servers
    Name: string[60];
    Zahl: Integer;
  end;

var
  Form1: TForm1;
  CLDaten: CTDaten;
  SRDaten: STDaten;

implementation

{$R *.dfm}

procedure TForm1.CheckBox1Click(Sender: TObject);
begin
  clientsocket1.Active := checkbox1.Checked;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  clDaten.Name := 'Marko';
  clDaten.Zahl := 123456455; //unseren Client-Record füllen
end;

procedure TForm1.ClientSocket1Connect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  memo1.Lines.Add(inttostr(sizeof(cldaten))); // Wie groß ist der Record.

  clientsocket1.Socket.SendBuf(cldaten, sizeof(cldaten)); //Record abschicken
end;

procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
begin
  ServerSocket1.Socket.Connections[0].ReceiveBuf(srdaten,sizeof(srdaten));
  memo1.Lines.Add(srdaten.Name); //schauen ob alles angekommen ist ;)
  memo1.Lines.Add(inttostr(srdaten.Zahl));
end;

end.
[edit=Chakotay1308]SourceCode formatiert. Mfg, Chakotay1308[/edit]
[edit=Matze] Mfg, Matze[/edit]
Marko
So`ne Atombombe kann einem den ganzen Tag verderben!
Eine eigene DLL in C++ geschrieben wird meist ein Sklave für mein Delphi/Pascal.
  Mit Zitat antworten Zitat