我目前正在進行一項編程任務。這項任務是爲了實現客戶端,網絡仿真器和服務器。客戶端將數據包傳遞給網絡模擬器,並將網絡模擬器傳遞給服務器。反之亦然。這項任務的先決條件是我只能使用原始套接字。所以我將創建自己的IP和UDP標頭。我用wireshark測試了我的數據包。它們都是正確的,並且格式正確(正確讀取它們)。如何將原始套接字綁定到特定的端口?
另一個要求是模擬器,客戶端和服務器都有它們必須綁定的特定端口。現在,我不明白如何將原始套接字綁定到特定端口。我所有的原始套接字都會接收它們綁定的主機地址上的所有流量。根據手冊頁和互聯網上的其他地方,包括理查德史蒂文斯的「Unix網絡編程」,這就是他們應該如何工作。我的老師沒有回覆我的任何電子郵件,我可能直到星期二才能問他。我看到兩個選項在我面前。首先,我可以使用libpcap從特定設備進行過濾,然後輸出到我的原始套接字。儘管如此,我覺得這已經超出了我們任務的範圍。或者我可以在從插座接收它們後對其進行過濾。這顯然有很多開銷,因爲所有的數據包都被複制/移動通過內核。至少,這是我的理解(如果我錯了,請隨時糾正我)。
所以我的問題是: 是他們的選擇或我可以爲此設置?原始套接字將綁定到端口的位置?我錯過了明顯的東西嗎?
謝謝你的時間。
-
因此,爲了確保我正確解釋這一點,我無法綁定到特定的端口?如果是這樣的話,你將如何實施「過濾器」? Libpcap連接到特定的設備並過濾端口,或者因爲這只是一個分配,只需在套接字接收後將其過濾出來?或者你是否有更好的方法來實現?順便謝謝你的回覆和時間。 – user614885 2011-02-14 02:48:26