2012-05-21 70 views
-2

試圖實現一個自定義DHCP服務器,它只需在BOOTP/DHCP數據包中發送IP地址。解析接收到的DISCOVER數據包完成後填充結構;我無法通過sendto函數發送OFFER數據包。 OFFER數據包似乎是一個單播數據包,其中目標地址是我們要提供給客戶機的IP地址。發送DHCP OFFER數據包的問題

位混淆;如何使用正常的DGRAM套接字爲不存在的IP地址丟棄DHCP OFFER數據包?也;我需要在投擲數據包時啓用SO_BROADCAST標誌嗎?

任何幫助真的很感謝!

-Thnx, DDPS。

回答

0

我認爲使用正常DGRAM(SOCK_DGRM,IPPROTO_UDP)發送是不正確的。因爲操作系統會首先發送一個ARP來定位目的地。 您必須使用原始套接字(SOCK_RAW,IPPROTO_RAW),甚至使用(SOCK_RAW,htons(ETH_P_ALL))。並使用IPHDRINCL設置setsockopt。這意味着你會自己填寫IP頭。所以操作系統將不會爲你檢查它並按照構造發送出去。