Hallo, ich möchte Kommunikation von einem µC an den PC über Ethernet ermöglichen. Dabei möchte ich raw Daten Versenden, d.h. keine Zusätzlichen overhead auser source, destination und length haben. Wie kann ich dabei auf dem PC solche Daten versenden und empfangen? Ob mit einem Terminal, mit c++ oder Java ist mir erstmal egal. Gruß, rawer
rawer schrieb: > Wie kann ich dabei auf dem PC solche Daten versenden und empfangen? "Raw Sockets" verwenden.
Vielen Dank für die schnelle Antwort! Dazu aber noch ein paar Fragen: -Wikipedia sagt: a raw socket is an internet socket that allows direct sending and receiving of Internet Protocol packets without any protocol-specific transport layer formatting. D.h. der IP Header kann nicht verändert werden. Scheinbar ist dieser wiki Eintrag aber nicht korrekt, richtig? -Ich verwende win7. Kann ich die winsock API benutzen, oder würden Sie etwas anderes empfehlen? -Wenn mein Programm die gesammte Ethernet Kommunikation abhören will, bekomme ich dann nicht ein Problem mit anderen Programmen, die auch darauf zugreifen wollen?
Raw Data heisst nicht unbedingt auch Raw Socket - TCP oder UDP ist dein Freund. Z.B. ein Arduino nebst Ethernetshield und das Ethernet-Lib-Beispielprogramm sind ein guter Start. Wenn du schon mal programmiert hast, bist du nach 1 Stunde fertig ...
Tcp/ip ist ja schon ein Protokoll, noch tiefer geht es mit einem Pakettreiber wie WinPCap.
Ich wuerde es mit UDP versuchen. Vom TCP/IP-Stack musst du dann auf Seite des Controllers nicht so viel implementieren. Auf PC Seite hast du dann den Vorteil dass du mit Standardschnittstellen arbeiten kannst und es fertige Tools wie Wireshark gibt die dir bei der Fehlersuche helfen.
TCP bzw. UDP, selbst IP will ich gerade nicht verwenden, weil ich die Header nicht haben will. JojoS schrieb: > noch tiefer geht es mit einem > Pakettreiber wie WinPCap Das sieht gut aus! Ich werde mir das gleich mal genauer anschauen. Vielen Dank für die Antworten!
Der schon genannte pcap Treiber sollte dir eine Kommunikation auf der untersten Ebene ermöglichen. Soweit ich weiss sind bei der Installation schon einige Beispielprogrämmchen dabei, die dir den Einstieg erleichtern. Viel Erfolg!
UDP Header ist ja schon SEHR schlank, .. und hat eigentlich nur Vorteile.. darf man also trotzdem fragen was du vor hast? (u.U: machst du dir unnötige Arbeit..) bei dem was du vor hast, sollte WireShark schon längst installiert sein, (und damit auch WinPCap) ..
:
Bearbeitet durch User
Besser Spät als nie! Ich möchte mit einem Zynq per Ethernet kommunizieren. Im Moment sollen zwar große Pakete verschickt werden, aber im allgemeinen möchte ich auch kleine Pakete verschicken, bei denen sich der Overhead dann deutlich auswirken könnte. Um das Program auf dem Zynq möglichst klein zu halten (ich programmiere bare metal, d.h. ohne Linux), möchte ich dort auch keinen IP Stack draufpacken. Nochmal danke für alle antworten!
rawer schrieb: > Um das Program auf dem Zynq möglichst klein zu halten (ich programmiere > bare metal, d.h. ohne Linux), möchte ich dort auch keinen IP Stack > draufpacken. für UDP braucht man keine Stack, du musst dir ja keinen Status merken. Der Overhead sind dann nur 20byte. Dafür hat man den Vorteil das man es ohne aufwand auch routen kann.
rawer schrieb: > Ich möchte mit einem Zynq per Ethernet kommunizieren. Im Moment sollen > zwar große Pakete verschickt werden, aber im allgemeinen möchte ich auch > kleine Pakete verschicken, bei denen sich der Overhead dann deutlich > auswirken könnte. Denke daran, dass Ethernet-Pakete minimal 64 Byte groß sind. fchk
Jop, das ist mir bewusst, danke!
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.