我最近玩的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'就意味着你有一個文件描述符可以讀寫。只有你現在不僅能夠做所有事情,還需要做所有事情,包括確保沒有其他應用程序推斷你直接使用網卡。這就是用戶空間網絡實質上所做的:一個進程(並且只有一個進程)完全控制網卡,而不是內核完全控制。 –