Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Problem mit ICS i. V. mit einem client/server Programm (https://www.delphipraxis.net/40509-problem-mit-ics-i-v-mit-einem-client-server-programm.html)

Blackice 16. Feb 2005 20:02


Problem mit ICS i. V. mit einem client/server Programm
 
Nabend,

ich habe ein Client/Serverprogramm welches ich mit Delphi 3 (schulbedingt, leider ;-) ) und den ICS Komponenten entwickle. Der Clientteil sucht dabei per UDP Broadcast nach den verfügbaren Servern im jeweiligen Subnetz. Soweit funktioniert der Broadcast auch. Das Problem besteht auf der Serverseite. Ich verschicke einen spezifisch formatierten String, den der Server interpretiert. Enthält er ein Keyword dann wird eine bestimmte Aktion ausgeführt.

Wenn ich nun den Server starte:

Delphi-Quellcode:
procedure TForm3.Button1Click(Sender: TObject);
begin
  with sesserver do begin
   Proto := 'udp';
   Addr := '0.0.0.0';
   Port := '6001';
   LocalPort := '6001';
   LocalAddr := GetMyIp;
   Listen;
  end;
end;
und dann den Client senden lasse:

Delphi-Quellcode:
procedure TForm2.Button1Click(Sender: TObject);
begin
  with sesclient do begin
   Proto := 'udp';
   Addr := edit1.text;
   Port := '6001';
   LocalPort := '6001';
   LocalAddr := GetMyIp;
   Connect;
   SendStr(GetMyIp + '_Server?');
   Close;
  end;
end;
passiert beim Server zunächst einmal gar nichts. Wenn ich den oben beschriebenen Button zum Serverstarten erneut betätige, wirft er logischerweise Fehler aus. code dazu:

Delphi-Quellcode:
procedure TForm3.sesserver_Error(Sender: TObject);
begin
 showmessage('error');
end;
Ich kann nun drei Errormeldungen wegdrücken und DANN erhalte ich meinen vom Client abgeschickten String!

Was passiert da? Ich verstehs nicht... Wieso muss ich den Server mehrmals starten und 3 Fehler wegdrücken bevor ich die Meldung erhalte?

Zu den Spezifikationen:

Der Server ist ein TWServerSocket mit:
Multithreaded: True
Port: 6001
Proto: UDP
LocalPort: 6001 (Was soll der eigentlich sein?)
MaxClients: 4
LocalAddr: wird mittels Funktion gesetzt
Addr: 0.0.0.0

Der Client ist ein TWSocket mit:
Port: 6001
Proto: UDP
LocalPort: 6001 (Was soll der eigentlich sein?)
LocalAddr: wird mittels Funktion gesetzt
Addr: 192.168.6.255 (eben die Broadcastadresse)

Achso: Es handelt sich um eine Nur-LAN Anwendung.

Bin für jede Hilfe dankbar!

Gruß
Blackice


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:59 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