Forum: PC-Programmierung Kommunikation vom µC über Ethernet zu PC ohne Protokolloverhead


von rawer (Gast)


Lesenswert?

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

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

rawer schrieb:
> Wie kann ich dabei auf dem PC solche Daten versenden und empfangen?

"Raw Sockets" verwenden.

von rawer (Gast)


Lesenswert?

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?

von Frank (Gast)


Lesenswert?

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 ...

von JojoS (Gast)


Lesenswert?

Tcp/ip ist ja schon ein Protokoll, noch tiefer geht es mit einem 
Pakettreiber wie WinPCap.

von udp (Gast)


Lesenswert?

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.

von rawer (Gast)


Lesenswert?

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!

von peterguy (Gast)


Lesenswert?

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!

von Robert L. (lrlr)


Lesenswert?

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
von rawer (Gast)


Lesenswert?

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!

von Peter II (Gast)


Lesenswert?

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.

von Frank K. (fchk)


Lesenswert?

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

von rawer (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.