我正在嘗試使用Java創建DHCP客戶端。 客戶端將發送Discover,接收要約,發送請求並接收確認。 但是,在發送discver和請求UDP DatagramPackets時,我需要從IP 0.0.0.0端口68發送它們,因爲DHCP的目的是從DHCP服務器接收可用的IP地址。 但是,如果我將套接字綁定到0.0.0.0,則根據http://download.oracle.com/javase/6/docs/api/java/net/DatagramSocket.html Java Reference,內核將爲套接字分配一個IP地址。Java上的DHCP客戶端,無法從IP發送0.0.0.0
如果我強迫通過
$ sudo ifconfig en0 0.0.0.0
設置我的網卡的IP地址爲0.0.0.0,並把我的包;我收到一個
java.io.IOException: Can't assign requested address
異常。
有沒有辦法從0.0.0.0發送UDP數據包並通過System.exec()
(如果需要)設置使用Java從DHCP服務器接收到的IP地址?
此外,你將不得不找出一種方法來設置你的Java代碼的IP地址,因爲你將需要設置IP地址爲您的DHCP客戶端工作......哎呀,我錯過了你的最後一部分題。您可能想要進行編輯,以使其突出一點。 –
是的,我檢查了Wireshark和實際的DHCP客戶端從0.0.0.0發送數據包,而我創建的客戶端從當前分配的地址發送....所以,你認爲我應該用C編程嗎?(要達到較低的水平? ) – Heartinpiece
我很肯定Java會給你你需要的靈活性,但我不確定你需要做什麼。您可以使用Socket(http://download.oracle.com/javase/1.5.0/docs/api/java/net/Socket.html),而不是使用DatagramSocket。你必須做DatagramSockets爲你做的事情,比如配置它來做UDP。不幸的是,我沒有在Java中做過,只有C,所以我在猜測。但我認爲Java應該能夠處理它。 –