Thread win32 udp server
(5 answers)
Opened by hudo at 2007-08-09 04:12 hudo+2007-08-09 02:19:49-- Solange der Server nicht läuft, landet alles, was der Client verschickt, im Datennirvana und der Client wird daraufhin ewig auf die Antwort warten. Überhaupt solltest Du bei Verwendung von UDP auf jeden Fall mit Timeouts für den Empfang arbeiten, denn das Protokoll garantiert nicht, dass versendete Pakete auch immer ankommen! Mehrere abgeschickte Pakete dürfen bei UDP auch überhaupt nicht, mehrmals oder in durchgewürfelter Reihenfolge ankommen. Die einzige Garantie ist, dass die Daten im Paket intakt sind, sofern es ankommt. In lokalen Netzwerken treten diese Effekte meistens zwar nicht auf, wenn aber eine der bei UDP fehlenden Protokolleigenschaften kritisch ist, sollte man sie auf Applikationsebene implementieren oder gleich TCP verwenden. Quote Was bei Deinem Code merkwürdig ist, ist die Tatsache, dass der Server send ohne eine Zieladresse verwendet. Da Du nirgends ein connect ausführst und mit UDP ein verbindungsloses Protokoll verwendest, ist es wohl pure Glückssache, ob das Betriebssystem die Antwort an den richtigen Client verschickt. Es wäre auch möglich, dass die Daten, die Du verschickst, nicht in ein einzelnes UDP-Paket passen und dann ein Übertragungsfehler entsteht -- die maximale Größe von UDP-Paketen hängt jedenfalls auch vom Betriebssystem ab und die Menge verschickten Textes ist im kommentierten Programmteil ja etwas geringer. |