UDP und Java?

Gast #1018879
Moin,

ich habe eine Mikrocontroller-Anwendung gebaut, die Daten per Ethernet 
versendet. Als Protokoll habe ich dabei UDP implementiert. Nun 
funktioniert dies hinreichend gut, mit einem Netzwerkmonitor kann ich 
die Pakete empfangen und dieser zeigt auch an, dass sie richtig 
aufgebaut sind. Ein Java-Programm, dass ich zu ihrem Empfang 
programmiert habe, bekommt allerdings keine Daten.
Nun verwende ich das Checksum-Feld des UDP-Headers nicht, weil ich es 
moeglichst einfach halten wollte. Kann es damit zusammenhaengen? Oder 
sperrt eventuell die Firewall mich einfach aus, der Netzwerkmonitor kann 
die Daten aber dennoch erst einmal empfangen? (War schwierig 
rauszufinden, weil es ein Uni-Rechner war und ich nicht einfach die 
Firewall ausstellen konnte.)
Oder gibt es da Java-spezifische Probleme?

Danke und Gruss, Joern
Persönliche Seite
Joern wrote:
> Oder gibt es da Java-spezifische Probleme?
>
Wieso sollte es "Java-spezifische Probleme" geben? Das Problem wird 
sein, das der Layer welcher für UDP zuständig ist ob der 
fehlenden/falschen Prüfsumme das Paket verwirft.
Wobei falsch noch gehen könnte aber weglassen halte ich für keine Gute 
Idee ;)
Du mußt auch sichergehen das der Port korrekt ist sowie die Zieladresse.
Gast
Danke erstmal! Eigentlich glaube ich, dass meine Pakete richtig sind. 
Ich hatte anfangs einige Probleme mit der Endianess und infolge falsche 
Pakete. Das hat auch mein Netzwerkmonitor angezeigt, der nun aber die 
Pakete fuer richtig haelt. Zum Thema Pruefsumme im UDP-Header habe ich 
folgendes bei wikipedia gefunden:

"In dem Prüfsummenfeld kann eine 16 Bit große Prüfsumme mitgesendet 
werden. Die Prüfsumme wird über den Header, den so genannten 
Pseudo-Header und die Daten gebildet. Die Prüfsumme ist optional, wird 
aber in der Praxis fast immer benutzt (falls nicht, wird diese auf "0" 
gesetzt)."

Nun wundere ich mich, ob Java das vielleicht strenger sieht oder ob 
einfach nur die Firewall meine Pakete abfaengt. Wuerden sie in letzterem 
Falle trotzdem vom Monitor angezeigt??
Und wie koennte ich die Firewall ueberreden, die Verbindung zuzulassen? 
Erstmal vom Computer aus Pakete schicken anstatt einfach auf welche zu 
warten?

Gruss, Joern
Java macht da gar nichts besonderes. Java verlässt sich auf den IP-Stack 
des Betriebssystems. Wenn nichts ankommt, kommt entweder schon gar 
nichts bei dem Rechner an, oder der IP-Stack im Betriebssystem schmeißt 
das Paket weg weil er es nicht mag.
Gast
Fehlerhafte Prüfsummen beim UDP-Protokoll werden AFAIK vom IP-Stack
des OS ignoriert, d.h. die Applikation muss sich da selber kümmern.
Das Paket sollte also ankommen, egal ob UDP-Prüfsumme ok oder nicht.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 18 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.