www.mikrocontroller.net

Forum: PC-Programmierung C++: Daten senden und empfangen, aber in der MAC-Schicht


Autor: Raul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Fuer eine Anwendung moechte ich einzelne MAC-Pakete versenden. Verwendet 
werden soll C++. Ich habe schon erfahren, wie man das per UDP und TCP 
macht, aber gehts auch weiter unten im OSI-Modell?
Kann ich zum beispiel (wenn 2 PCs ueber gekreuztes Ethernetkabel direkt 
verbunden sind) an eine MAC-Adresse (logischerweise die der Gegenstelle) 
eine Zeichenfolge zukommenlassen?
Bei Mikrocontrollern (so ala AVR mit ENC28j60) geht das, aber kann man 
das in einer hochsprache auch dem PC?

Danke fuer Tipps, bin auch nur fuer die richtigen Google-Suchbegriffe 
dankbar...

Gruesse

Autor: Εrnst B✶ (ernst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schau dir mal die libpcap (oder winpcap, falls du Windows benutzen 
solltest) an, die kann direkt Pakete senden, und kapselt das ganze 
Betrübsystem-interne schön weg.

http://www.tcpdump.org/pcap.htm

Autor: ... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Als Einstieg vielleicht auch ein WOL_Proggie:
http://ahh.sourceforge.net/wol

Autor: RelaisLI (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Herzlichen Dank, ich werde die mal testen ob ich mit dem was hin 
bekomme, sonst melde ich mich nochmal...

Autor: Raul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Ich habe mal mit den Examples vonn winpcap rumgespielt. Die kriege ich 
zum laufen.
Ich möchte aber ein Programm mit einer GUI erstellen und nicht so ein 
Konsolen-Ding und da wollte ich mal ein Beispiel (mit änderungen, dass 
die z.B. die empfangenen Pakete in einer Textbox angezeigt werden) in 
eine CLR/Win32 Applikation einbinden.
Beim compilieren resp. beim Linken kommt aber ein Fehler folgender Art:

Error  6  error LNK2019: unresolved external symbol "extern "C" int 
__clrcall pcap_findalldevs(struct pcap_if  ,char *)" 
(?pcap_findalldevs@@$$J0YMHPAPAUpcap_if@@PAD@Z) referenced in function 
"private: void __clrcall TestWin32::Form1::button1_Click(class 
System::Object ^,class System::EventArgs ^)" 
(?button1_Click@Form1@TestWin32@@$$FA$AAMXP$AAVObject@System@@P$AAVEvent 
Args@4@@Z)   TestWin32.obj  TestWin32


Hat von Euch schon mal jemand etwas hingekriegt mit diesem WinPcap-Ding 
und graphischer Oberfläche? Weiss jemand eine Lösung zum Problem? Das 
wär super...

Autor: JojoS (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hast du die lib den auch als Input für den Linker hinzugefügt? Es gibt 
auch einen C# Wrapper für winpcap auf Sourceforge, der macht die Nutzung 
in der CLR bzw. unter C# um einiges einfacher.

Autor: Raul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!
Ja, das habe ich (glaube ich zuindest) mit folgenden Zeilen:
#pragma comment(lib, "ws2_32.lib")
#pragma comment(lib, "wpcap.lib")

Die Fehlermeldungen sind auch nicht mehr die gleichen, wenn ich die 
Zeilen weglasse. Also schon noch Linker-Errors aber nicht exakt die 
gleichen.
Es gibt unter den Project-Settings die Möglichkeit dem Linker 
zusätzliche Dateien anzugeben. Doch da steig ich irgendwie nicht durch: 
wie kann ich unter additional dependies dateien auswählen? Da kann ich 
nicht beliebige auswählen, nur einige die mich aber irgendwie nicht 
interessieren...
Ich gebs jetzt dann auf :(

Autor: JojoS (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
die Libs müssen auch gefunden werden, kopiere die libs mal in das 
Projektverzeichnis.

Autor: Raul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
OK, das habe ich hinbekommen...
Ich frage mich jetzt, ob der Code mit der libcap-Library portierbar ist 
auf Linux. Habe leider grad keinen PC mit Linux drauf. Aber hat da 
jemand Erfahrung mit?
Ziel wäre es, den gleichen Code für Linux und Windows zu kompilieren 
(jeweils auf dem entsprechenden System). Leider konnte ich per google 
keine sicheren Resultate in Erfahrung bringen. Da ist oft recht konfus 
von libpcap und winpcap die rede, aber was wie zu einander steht ist mir 
noch schleierhaft. Und ich möchte nicht einen Haufen Arbeit in das Ding 
steckum dann von Euch zu erfahren, dass es mit was anderem viel 
einfacher gewesen wäre.
Kann da jemand Licht ins Dunkel bringen? Ist das mit der LibPcap möglich 
oder wo liegt der Unterschied?

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.