Asynchrone UDP Sockets senden falsche Prüfsumme?
Verfasst: Dienstag 2. November 2010, 16:38
Hallo, ich mal wieder, mit erneuter Hoffnung auf Hilfe
Wie bei meinem Ping-Problem, habe ich auch jetzt immer noch eine variierende Anzahl Server die ich aber diesmal mit einem UDP-Socket kontaktiere.
Das funktioniert auch größtenteils. Aber leider nicht immer und das ist das Problem. Ich kann mir keinen Reim, und wirklich überhaupt keinen, darauf machen warum.
Ich starte mein Programm, lasse die Abfrage starten und erhalte meine ersten Ergebnisse. Diese Ergebnisse befinden sich immer so im Schnitt bei 60-80%, womit ich auch zufrieden wäre. Allerdings sind es dann im nächsten Moment plötzlich nur noch 5% oder weniger. Im wiederum nächsten Moment sind es dann wieder 60-80%... Dieses Spielchen wiederholt sich immer wieder. Auch nach einem Neustart des Programms.
Nachdem ich mich jetzt schon ein paar Tage mit Socket Programmierung beschäftige hab ich schon einiges ausprobiert und somit ist der Code den ich benutze, meiner Meinung nach, ähm, ja, durchdacht genug.
Also hab ich mal nicht nur in meinem Code nach dem Fehler bzw. der "Einschränkung" gesucht. Mit wireshark habe ich dann folgendes entdeckt: Wenn es mal wieder nur 5% der Server waren die antworteten, kam bei den restlichen folgender Fehler: Header checksum: 0x0000 [incorrect, should be ...] ("..." wäre in dem Fall die pro Paket erwartete)
Aber, warum? Das Paket ist immer das selbe, nur der Header natürlich nicht und das Paket wird jedes Mal in einem Rutsch gesendet. Und da ich über den Header keine Kontrolle habe, weiß ich jetzt nicht wo ich noch nach Fehlern oder Erklärungen suchen soll. Um ehrlich zu sein, bin ich mir gar nicht so sicher dass das der richtige "Fehler" ist...
Hab euch mal ein kleines Beispielskript geschrieben, das unter Python 2.7 und Windows (7, 64bit) wie bei mir laufen sollte. (Bei mir läuft das über einen separaten Thread in einem wxPython Programm.)
Dazu noch zwei Screenshots wie die Ausgabe auf dem Bildschirm aussah. (Da ist auch noch eine Exception zu sehen, falls auch hier jemand einen Hinweis hat?)
Skript
Screenshots

Wie bei meinem Ping-Problem, habe ich auch jetzt immer noch eine variierende Anzahl Server die ich aber diesmal mit einem UDP-Socket kontaktiere.
Das funktioniert auch größtenteils. Aber leider nicht immer und das ist das Problem. Ich kann mir keinen Reim, und wirklich überhaupt keinen, darauf machen warum.
Ich starte mein Programm, lasse die Abfrage starten und erhalte meine ersten Ergebnisse. Diese Ergebnisse befinden sich immer so im Schnitt bei 60-80%, womit ich auch zufrieden wäre. Allerdings sind es dann im nächsten Moment plötzlich nur noch 5% oder weniger. Im wiederum nächsten Moment sind es dann wieder 60-80%... Dieses Spielchen wiederholt sich immer wieder. Auch nach einem Neustart des Programms.
Nachdem ich mich jetzt schon ein paar Tage mit Socket Programmierung beschäftige hab ich schon einiges ausprobiert und somit ist der Code den ich benutze, meiner Meinung nach, ähm, ja, durchdacht genug.

Aber, warum? Das Paket ist immer das selbe, nur der Header natürlich nicht und das Paket wird jedes Mal in einem Rutsch gesendet. Und da ich über den Header keine Kontrolle habe, weiß ich jetzt nicht wo ich noch nach Fehlern oder Erklärungen suchen soll. Um ehrlich zu sein, bin ich mir gar nicht so sicher dass das der richtige "Fehler" ist...
Hab euch mal ein kleines Beispielskript geschrieben, das unter Python 2.7 und Windows (7, 64bit) wie bei mir laufen sollte. (Bei mir läuft das über einen separaten Thread in einem wxPython Programm.)
Dazu noch zwei Screenshots wie die Ausgabe auf dem Bildschirm aussah. (Da ist auch noch eine Exception zu sehen, falls auch hier jemand einen Hinweis hat?)
Skript
Screenshots