2012-09-25 20 views
4

我正在嘗試使用原始套接字構建以太網網絡。我無法使用TCP/IP,UDP或任何其他協議。Linux上的C/C++中的簡單原始套接字服務器

這是因爲它將與非常簡單的硬件進行通信,這些硬件不具備處理所有不同協議層的資源。 我的網絡將由1臺主機通過以太網交換機與多個硬件通信組成。在這一點上,我基本上只想發送簡單的數據包到每個硬件,並建立一個我可以擴展的簡單服務器。我的系統運行Linux,服務器需要用C或C++編寫。

我一直在試圖找到關於如何使用原始套接字的信息,但每個人總是說不要使用它們並且不提供任何信息。我有一個非常強大的編程背景,但沒有網絡經驗。 任何人都可以提供有關如何開始或可以找到相關教程的信息?

+1

網絡套接字與IP協議幾乎是同義的。即使你放棄IP協議,你也必須實現你自己的類似。檢查你的假設。 – riwalk

+2

我不得不同意Stargazer712,實現其他層的開銷實際上並不是那麼多。如果你使用udp,大部分的字段可以是常量。 – CrazyCasta

+2

[進一步研究](http://en.wikipedia.org/wiki/UIP_(micro_IP))在製作資源報表前建議。 –

回答

4

在網上有各種相對容易找到的教程。一個適合你開始的好地方就是一個這樣的教程:Sockets Tutorial。它在C中包含一個簡單的客戶端/服務器示例(儘管該示例使用的是TCP協議)。

更多結果:

Raw Sockets programming on Linux with C

LINUX SOCKET PART 17 Advanced TCP/IP - THE RAW SOCKET PROGRAM EXAMPLES

Here is a comprehensive list of google search results on raw socket programming in C

+2

他想要原始套接字,而不是tcp/udp。 – CrazyCasta

+0

@CrazyCasta,他可能做的,他現在還不知道。 – riwalk

+0

@ Stargazer712雖然我同意使用原始套接字是愚蠢的,尤其是在沒有網絡背景的情況下,他很清楚自己想要什麼。這在評論中更合適,表明他放棄了原始套接字的想法。 – CrazyCasta

相關問題