我最近玩的Linux和Windows上的套接字接口在同一网络上的机器之间发送TCP和UDP数据包。通常,这是通过一些套接字结构完成的,方法是打开,写入数据,读取数据并在完成时关闭它。什么是最低级别的方式发送数据到设备/ dev/eth0(或类似)与c/c + +
有没有办法做到这一点,没有这种套接字结构?我的意思是,如果我使用它,这个结构将我传递给它的数据包装在协议头文件中并通过网络发送。
如果我手动创建协议数据包和数据报,我可以使用类似于cat file.txt > /dev/etho
(或/dev/wlp5s0
在我的情况),但使用c/C++发送数据到网络上的另一台机器?
您可以查看[原始套接字](https://en.wikipedia.org/wiki/Raw_socket)或[用户空间网络](https://www.google.com/search?q=user +空格+网络)。 –
@SteffenUllrich我已经知道原始插座,但仍然使用插座,对吧?我会看看这个用户空间网络。 –
*“但仍然使用套接字”* - 是的,它仍然是一个文件描述符,您可以在其中读写。但是,像你提出的那样访问'/ dev/eth0'就意味着你有一个文件描述符可以读写。只有你现在不仅能够做所有事情,还需要做所有事情,包括确保没有其他应用程序推断你直接使用网卡。这就是用户空间网络实质上所做的:一个进程(并且只有一个进程)完全控制网卡,而不是内核完全控制。 –