Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Library: Internet / LAN / ASP.NET (https://www.delphipraxis.net/23-library-internet-lan-asp-net/)
-   -   Delphi Record vom Client zum Server schicken mit Socketkomponenten (https://www.delphipraxis.net/45099-record-vom-client-zum-server-schicken-mit-socketkomponenten.html)

Net7 29. Apr 2005 16:27


Record vom Client zum Server schicken mit Socketkomponenten
 
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]


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:17 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz