Vorrei scrivere un programma ed eseguirlo su due macchine e inviare alcuni dati da una macchina all'altra in una cornice Ethernet.Posso scrivere programmi di rete basati su Ethernet in C++?
In genere i dati dell'applicazione sono al livello 7 del modello OSI, c'è qualcosa come una restrizione del kernel o una restrizione API, che mi impediscono di scrivere un programma in cui posso specificare un indirizzo MAC di destinazione e avere alcuni dati inviati a quel MAC come payload Ethernet? Quindi scrivere un programma per ascoltare i frame in arrivo e afferrare i frame da un indirizzo MAC di origine specificato, estraendo il carico utile dei dati dal frame?
(Quindi non voglio nessun altro overhead come IP o intestazioni TCP/UDP, non voglio andare più in alto del layer 2).
Questo può essere fatto in C++, o tutte le comunicazioni avvengono al livello IP e ciò può essere fatto su Ubuntu? Amore extra per indicare o fornire esempi! : D
Il mio problema è, ovviamente, io sono nuovo alla rete di programmazione in C++ e per quanto ne so, se voglio comunicare attraverso una rete devo usare una chiamata socket()
o simili, che funziona ad un livello IP , quindi posso scrivere un programma C++ per lavorare su OSI layer 2, ci sono API per questo, il kernel di Linux permette anche questo?
C++ è un linguaggio di programmazione, IP Layer è un concetto astratto. Come si sostituisce l'altro nel tuo testo è oltre me. – littleadv
@littleadv: Perché? Non sa esattamente cosa chiedere ("Come uso i socket grezzi in C++?"), Ma puoi capire perfettamente il significato. – cha0site
In teoria, non ci dovrebbero essere problemi con il C++ che passerà ai successivi 2, ma il supporto del sistema operativo potrebbe limitarti. Anche se l'UDP ha pochissimo overhead, basta usare quello. –