jjturbo - Mo 19.12.16 13:41
Titel: TUDPSocket.ReceiveBuf hängt
Moin Forum,
wenn ich mit
Delphi-Quelltext
1: 2: 3: 4:
| var myUDPSocket :TUDPSocket; buf :Array[0..18] of 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 04:21
Moin!
jjturbo hat folgendes geschrieben : |
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.
jjturbo hat folgendes geschrieben : |
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