Autor Beitrag
Flamefire
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1207
Erhaltene Danke: 31

Win 10
Delphi 2009 Pro, C++ (Visual Studio)
BeitragVerfasst: Mo 21.04.08 13:36 
Ich brauche ein Programm welches über UDP mit einem anderen kommuniziert.
So weit ich das bisher gesehen habe, sende ich ein Packet an das Programm und erhalte ein Antwort packet.
Darum habe ich das über TUPDSocket gelöst.

Ich sende ein Packet "sendBuf()" und empfange dann eins "receivebuf()".
Das Problem ist, dass ich anscheinend ein Sleep von 10-30ms (keine Ahnung wieviel genau) brauche, bevor ich das Packet empfangen kann. Andernfalls erhalte ich eine Fehlermeldung (Error 10035 wenn ich mich nicht irre)
Gibt es keine Receivewait() oder was in der Richtung? Oder müsste ich die Selber schreiben (While-schleife)?

Oder geht das ganze mit ner andren Kompo besser (Indy vl?)

Wichtig ist eben dass ich ein Packet sende und dann dass letzte gesendete empfange.

Bei dem Thema gleich die Frage zu UDP:
Wie läuft das genau? Wenn ich nen Port aufmache (TUDPSocket auf active=true) und das andre Programm dann Daten schickt. Was ist mit den Daten? Landen die auf nem Stack von dem ich das erste mit ReceiveBuf() kriege (FIFO) oder krieg ich immer nur das letzte? Oder verfallen die einfach wenn ich nicht schnell genug receive?

Das OnRecv-Event der TUDPSocket Kompo. Wann wird das genn genau aufgerufen? Anscheinend nur wenn ich receiveBuf() aufrufe. Aber welchen Sinn hat das dann?
LexXis
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 170
Erhaltene Danke: 3



BeitragVerfasst: Di 22.04.08 23:57 
Ich hab mich noch nich genauer mit UDP auseinandergesetzt, aber mein Gefühl sagt mir, dass OnRecv aufgerufen wird, wenn Du was empfängst ;)
Danach solltest Du mit ReceiveBuf darauf zugreifen können.

Zum Thema FIFO: Verlass dich nicht drauf, dass die Pakete auch in der Reihenfolge empfangen werden, inder Du sie sendest!