Hallo,
in Delphi 2007 / Indy 10.1.1 baue ich ein Projekt, welches auf Basis von UDP Paketen kommunizieren muss / soll. Es müssen Pakete verschickt und natürlich auch empfangen werden. Das Ganze bekomme ich auch hin, allerdings habe ich bei der Initialisierung noch eine Lücke. Ich muss immer erst etwas über den Socket versenden, bevor ich Daten empfangen kann; ich denke da muss es noch einen anderen Weg geben. Folgendermaßen bin ich derzeit vorgegangen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| var buf: array[0..1] of Byte; begin SckWSM.DefaultPort := WSM_PC_PORT; SckWSM.Active := True; SckWSM.SendBuffer( receiver.GetIPAddress, 0, RawToBytes( buf, sizeOf( buf ) ) ); end; ... procedure TFormStart.SckWSMUDPRead(Sender: TObject; AData: TBytes; ABinding: TIdSocketHandle); begin receiver.UDPRead( AData ); end; |
Wobei SckWSM: TIdUdpServer ist. Das Paket, welches ich hier versende ist vom Inhalt völlig irrelevant, wenn ich es aber nicht sende, kann ich nichts empfangen, soll heissen die Methode SckWSMUDPRead wird nie gerufen, obwohl ich im Wireshark sehe, dass Pakete ankommen.
Wie ist die korrekte Initialisierung, ich denke es muss ohne dies Nirvana-Senden gehen. Wäre evt. was für die Library? Hab aber schon alles gescannt, bin jedoch nicht fündig geworden...
Danke,
Stephan