我試圖用C編寫一個服務器 - 客戶套接字的程序。目標是讓服務器監聽特定的端口,但是通過IP地址範圍的屬於相同的IP子網。此IP子網是127.x.x.x範圍(當然不是127.0.0.1)的一部分。在C/Unix的IP子網上監聽的套接字
幾點要注意:
- 這是一個基於流的插孔,而不是數據報套接字。
- 這不是廣播地址。
- 實現在只在Unix/Linux平臺
我不想在服務器範圍內的每個IP地址上打開多個套接字C/C++。這不可擴展。
任何幫助將理想的讚賞。這是否可行?
我試圖用C編寫一個服務器 - 客戶套接字的程序。目標是讓服務器監聽特定的端口,但是通過IP地址範圍的屬於相同的IP子網。此IP子網是127.x.x.x範圍(當然不是127.0.0.1)的一部分。在C/Unix的IP子網上監聽的套接字
幾點要注意:
我不想在服務器範圍內的每個IP地址上打開多個套接字C/C++。這不可擴展。
任何幫助將理想的讚賞。這是否可行?
您只能綁定到一個套接字上的一個地址。爲什麼你不能綁定到INADDR_ANY,只是拒絕任何沒有綁定到你的目標IP地址的數據包?或者,您可以綁定到任意端口並使用OS級別的魔術(例如iptables,bpf)將目的地爲這些IP /端口組合的數據包重新路由到您的套接字。
您可以使用防火牆來阻止任何來自所需子網之外的人連接(即在o/s級別)。您可以將套接字置於混雜模式並接受給定接口上的所有連接。我不知道你是否可以做到這兩點(在混雜模式下有一個套接字並在其上運行iptables)。本質上就像構建一個只偵聽一個端口的數據包嗅探器。
AFAIK在Windows中是不可能的。 –
這是用於Unix/Linux的。應該在我的子彈列表中提到它,但認爲它已經在標題中。 – viv