mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik UDP und Java?


Autor: Joern (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Anonymous (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Versuch mal die Prüfsumme auf 0 zu setzen.

Autor: Anonymous (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Außerdem benutzt die Netzwerkmonitorprogramme nicht den TCP/IP Stack, 
sondern greift direkt auf RAW-Paketdaten.

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Joern (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zeig mal den Code für den UDP Empfang, wenn die Firewall blockt siehst 
du auch auf dem Monitor nix!
Hast du schonmal versuch von Java zu Java was zu senden?

Autor: Hannes Jaeger (pnuebergang)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Ekschperde (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Ekschperde (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
P.S.:
Lausche doch mal mit netcat auf dem UDP-Port.
Das benutzt dafür den IP-Stack des OS.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.