J'ai joué récemment avec l'interface de socket sur linux et fenêtre pour envoyer des paquets TCP et UDP entre machines sur le même réseau . Habituellement, cela est fait avec une certaine structure de socket, avec des méthodes pour ouvrir, écrire des données, lire des données et le fermer quand c'est fait.Quel est le moyen le plus bas niveau pour envoyer des données à l'appareil/dev/eth0 (ou similaire) avec c/C++
Existe-t-il un moyen de le faire sans cette structure de socket? Je veux dire, si je l'utilise, cette structure prend les données que je lui passe, l'empaquette avec les en-têtes de protocole et envoie à travers le réseau. Est-ce que je peux utiliser quelque chose de similaire à cat file.txt > /dev/etho
(ou /dev/wlp5s0
dans mon cas) mais en utilisant c/C++ pour envoyer les données à l'autre machine sur le réseau?
Vous pouvez jeter un oeil à [raw sockets] (https://en.wikipedia.org/wiki/Raw_socket) ou [réseau espace utilisateur] (https://www.google.com/search?q=user + espace + mise en réseau). –
@SteffenUllrich Je connaissais déjà les sockets raw, mais utilise toujours des sockets, non? Je vais jeter un oeil à ce réseau d'espace utilisateur. –
* "mais utilise toujours des sockets" * - oui, c'est toujours un descripteur de fichier où vous pouvez lire et écrire aussi. Mais, en accédant '/ dev/eth0' comme vous le proposez, vous avez aussi un descripteur de fichier où vous pouvez lire et écrire. Seulement, vous avez maintenant non seulement la capacité de tout faire, mais vous devez aussi tout faire, y compris vous assurer qu'aucune autre application n'indique votre utilisation directe de la carte réseau. C'est ce que fait essentiellement le réseau de l'espace utilisateur: un processus (et un seul processus) a le contrôle total de la carte réseau au lieu que le noyau ait un contrôle total. –