Ciao.
Io ho fatto un'applicazione per i protocolli ethernet di automazione industriale; avevo iniziato in C++ ma poi ho mollato tutto e seguito la strada dei wrapper: per Java c'è pcap4j, per C# c'è pcap.net che ha un tutorial molto valido e probabilmente può essere usato come riferimento anche per il C++ (se non mi ricordo male c'è anche l'esempio del ping ICMP). Sono arrivato fino in fondo: l'unica cosa scomoda è che gli effetti del garbage collector diventano visibili e devi attuare tutta una serie di tecniche per arginare il problema. Forse era meglio continuare in C++, ma evidentemente sono troppo schiappa in questo linguaggio
Ho provato anche i socket TCP ma onestamente sono molto meglio i metodi "tradizionali", nonostante sia anch'io un fanatico del bare metal.
I wrapper sono basati sui tradizionali pcap e winpcap. Npcap l'ho installato in modalità compatibilità con winpcap e per il momento funziona tutto: dai i miei installer faccio in modo di forzare la modalità compatibile. Se riesci a fare tutto in C++ con npcap nella modalità nuova torna qui a darci lumi: io mi prenoto per le ripetizioni