Entwickler-Ecke

Internet / Netzwerk - TUDPSocket.ReceiveBuf hängt


jjturbo - Mo 19.12.16 14:41
Titel: TUDPSocket.ReceiveBuf hängt
Moin Forum,

wenn ich mit

Delphi-Quelltext
1:
2:
3:
4:
var myUDPSocket :TUDPSocket;
    buf         :Array[0..18of Byte;
begin
 myUDPSocket.ReceiveBuf(buf,Length(buf),0);


versuche Daten zum empfangen obwohl am Socket noch nichts vorhanden ist, dann bleibt das Programm in der Zeile hängen.

Laut Hilfe sollte es doch funktionen wenn man es so löst:

Delphi-Quelltext
1:
2:
  if myUDPSocket.WaitForData(1000)
   then myUDPSocket.ReceiveBuf(buf,Length(buf),0);


Dann sollte das Programm auch ohne Daten nach einem TimeOut von 1000ms weiter laufen?

Ich hoffe Ihr könnt mir weiterhelfen?


Narses - Di 20.12.16 05:21

Moin!

user profile iconjjturbo hat folgendes geschrieben Zum zitierten Posting springen:
versuche Daten zum empfangen obwohl am Socket noch nichts vorhanden ist, dann bleibt das Programm in der Zeile hängen.
Das ist "normal", deshalb arbeitet man hier normalerweise mit Threads.

user profile iconjjturbo hat folgendes geschrieben Zum zitierten Posting springen:
Laut Hilfe sollte es doch funktionen wenn man es so löst:

Delphi-Quelltext
1:
2:
  if myUDPSocket.WaitForData(1000)
   then myUDPSocket.ReceiveBuf(buf,Length(buf),0);

Dann sollte das Programm auch ohne Daten nach einem TimeOut von 1000ms weiter laufen?
Wenn die Hilfe sowas behauptet und es doch nicht funktioniert, frag den Autor der Hilfe (oder schau in die WSA-Doku und den Komponenten-Quelltext). :nixweiss:

Ist das die Delphi-Bordkomponente? Wenn ja, dann sagt meine Erinnerung, dass diese konzeptionell "defekt" (im Sinne von unbrauchbar) ist. Leider erinnere ich mich aber nicht mehr an Details, warum. :gruebel: Jedenfalls war das der Grund, warum ich damals meine eigene UDP-Komponente entwickelt habe. :idea: Ich hab's irgendwann aufgegeben verstehen zu wollen, wie das funktionieren soll... :nut:

cu
Narses