ich mache gerade meine ersten Gehversuche mit TCP/IP und versuche mit Hilfe der Synapse-Library einen TCP-Server zu bauen, der einfach nur ein Datenpaket eines einzelnen Clients empfangen soll. Anscheinend ist die Sache komplizierter als es scheint ;-)
Code: Alles auswählen
var
TCP: TTCPBlockSocket;
procedure TForm1.Button1Click(Sender: TObject);
begin
TCP:= TTCPBlockSocket.Create;
TCP.Bind('0.0.0.0', '10240');
TCP.Listen;
TCP.Accept;
ShowMessage('Client hat anscheinend connected.');
Screen.Cursor:= crHourGlass;
repeat
Application.ProcessMessages;
until TCP.WaitingData > 0;
Screen.Cursor:= crDefault;
end;
Die Abfrage der Returncodes (TCP.LastError) habe ich mal weggelassen. Bis einschließlich TCP.Accept gibt es keine Fehler. Allerdings verläßt das Programm die Endlosschleife nicht. TCP.WaitingData wird nicht größer als 0.
Auf der Client-Seite sieht es folgendermaßen aus:
Code: Alles auswählen
var
TCP: TTCPBlockSocket;
Buffer: TMemory;
procedure TForm1.Button1Click(Sender: TObject);
begin
GetMem(Buffer, 2048);
TCP:= TTCPBlockSocket.Create;
TCP.Connect('192.168.178.32', '10240');
if TCP.LastError = 0 then begin
ShowMessage('Connect ging schief.');
exit;
end;
TCP.SendBuffer(Buffer, 2000);
end;
Der Client "connected" korrekt und TCP.SendBuffer läuft auch auf keinen Fehler. Hat jemand einen Tipp? Danke.
Gruß, Bernd.