Forum: Mikrocontroller und Digitale Elektronik Raspberry Pi4 - ETH nutzen via C Code


von Phillips (Gast)


Lesenswert?

Hallo,

wie kann man denn bitte beim RPi4 via C auf ETH zugreifen?

Gibt es irgendwo Beispiel Code in C, mit dem man Daten via
ETH übertragen kann um dann z.B. am PC via virtuellem COM-Port diese
Daten weiter zu verarbeiten?

Welche C Libraries gibt es dazu ?


Danke

von Programmierer (Gast)


Lesenswert?

Falls du mit "ETH" Ethernet meinst - ja, man kann mit raw Sockets direkt 
Ethernet-Frames senden. Das macht aber sehr wenig Sinn, weil das dann 
mit dem Linux-eigenen IP-Stack kollidiert und du dann IP, TCP & Co 
komplett selbst implementieren müsstest.

Es ist viel, viel einfacher direkt TCP-Sockets zu verwenden und dabei 
völlig zu ignorieren ob das physische Medium jetzt Ethernet, WLAN oder 
was auch immer ist. Dazu benutzt man in C das klassische BSD-Socket API:

https://en.wikipedia.org/wiki/Berkeley_sockets

https://man7.org/linux/man-pages/man2/socket.2.html

https://www.linuxhowtos.org/C_C++/socket.htm

Noch einfacher ist es ein High-Level-Protokoll zu verwenden welches die 
Details noch weiter abstrahiert, wie z.B. https://zeromq.org/ .

von Programmierer (Gast)


Lesenswert?

PS: Das Ganze hat auch nichts mit Raspberry-PI zu tun, sondern ist 
allgemein für Linux/Unix so. Der Raspberry-spezifische Teil ist hier im 
Kernel versteckt und für C-Anwendungs-Programmierung nicht sichtbar.

von Klaus W. (mfgkw)


Lesenswert?

Wirklich verstanden habe ich die Frage nicht.

Aber möglicherweise kommt man ums Programmieren herum, wenn man netcat 
hat und verstanden hat.
Damit kann man allerlei pipes und Netzwerkverbindungen kreuz und quer 
verbinden, netcat reicht einfach alles durch.

Beispielsweise kann man einen listening socket aufmachen und 
stdin/stdout von netcat damit verbinden, oder sich zu einem 
existierenden listening socket auf einem anderen Rechner verbinden (der 
auch von einem netcat kommen kann, aber nicht muß).

Wenn du deine Daten jetzt in stdin/stdout von netcat bekommst, hast du 
wahrscheinlich schon gewonnen.

Eventuell ist auch ssh -L ... eine Überlegung wert.

von Phillips (Gast)


Lesenswert?

Danke für die verschieden Tips.
Habe aber jetzt schon einiges gefunden was mir vermutlich weiterhilft.
z.B. https://github.com/Mad-Scientist-Monkey/sockets-ccpp-rpi

von Programmierer (Gast)


Lesenswert?

Phillips schrieb:
> Habe aber jetzt schon einiges gefunden was mir vermutlich weiterhilft.
> z.B. https://github.com/Mad-Scientist-Monkey/sockets-ccpp-rpi

Was ist daran jetzt Raspberry PI-spezifisch und anders als bei Linux auf 
dem PC?

von Klaus W. (mfgkw)


Lesenswert?

Linux ist langweilig, RPi ist hip.

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.