有沒有辦法將UDP數據包發送到網絡MAC地址? DatagramSocket和DatagramPacket似乎都沒有這樣做的機制。如何將UDP數據包發送到Android應用程序的MAC地址?
1
A
回答
1
由於分層網絡堆棧,第一個響應是您無法將UDP消息發送到MAC地址。我的聲明意味着您沒有任何方式在UDP數據報字段中設置MAC地址。您可以將UDP數據報發送到IP地址和端口。該IP地址可以是單播,多播或廣播。
如果您打算將UDP數據報發送到特定的MAC地址,則需要實施更復雜的解決方案(DHCP是更復雜解決方案的一個示例)。有不同的策略,你可以申請:
- 如果你只需要發送一個數據包的MAC地址,而無需接受任何數據報從NIC,並且知道MAC地址,你將需要發送的第2層幀到該MAC地址(第2層協議允許您設置MAC地址)。您可以實施偵聽該MAC地址幀的協議,並能夠向您發送響應,以提供相應的IP地址。 RARP是一種協議,可讓您在給定MAC地址的情況下獲得IP地址
- 您可以實現使用多播組的協議。從PC發送包含您所定位的MAC地址的多播消息。訂閱該組播組的所有節點(節點中的應用程序)都會收到該消息。具有目標MAC地址的那個可以響應。一旦它響應,你就有了它的IP地址並且可以發送一個單播UDP數據報。
+0
非常感謝您的澄清。我已經讀過關於將UDP數據包發送到MAC地址的原始套接字。我猜這是不可能用Java for Android來完成的。 – Hong
1
簡短的回答是否定的。網絡stack被設置爲使硬件地址在OS的媒體層中可尋址,僅具有暴露給應用的傳輸層的定義接口。您需要使用低級別操作系統。看起來你正在嘗試在Java中進行這種調用,而且你很難完成這個任務。
相關問題
- 1. Ruby將數據包發送到已知的MAC地址
- 2. 如何將Android應用程序中的地址發送到Google地圖
- 3. UDP套接字無法發送數據包到DHCP地址
- 4. 如何將數據從android應用程序發送到asp.net webservices
- 5. 如何在java中獲取UDP數據包發送方的本地ip地址
- 6. 如何使用從源地址到目標主機的IP地址發送udp數據包?
- 7. 如何在Mac OS X上讀取和發送UDP數據包?
- 8. Android AsyncTask發送UDP數據包
- 9. 從Android平臺發送UDP數據包
- 10. 如何爲UDP數據包發送者啓用自定義IP地址?
- 11. 如何將UDP數據包發送到GPRS模塊
- 12. UDP發送數據包failling
- 13. 發送UDP數據包gopacket
- 14. 從Android應用程序發送數據到B應用程序
- 15. 發送UDP數據包,不使用ARP,已知的IP和MAC
- 16. 將數據發送到指定的應用程序的Android
- 17. 從Android應用程序發送Json到本地數據庫
- 18. 如何在Android應用程序中使用mac地址
- 19. 如何將數據發送到特定的應用程序?
- 20. Android - 使用onSensorChanged同步線程以發送udp數據包
- 21. 如何使用packet_mmap發送SOCK_DGRAM數據包而不關心MAC地址?
- 22. 如何從網站發送svg數據到android應用程序
- 23. 如何使用nc發送udp數據包到windows 7?
- 24. 獲取UDP數據包的IP地址
- 25. 將數據從servlet發送到android應用程序
- 26. Android-將數據從應用程序發送到燈服務器
- 27. Facebook Android SDK - 將數據發送到Facebook應用程序
- 28. MaxMSP將數據發送到Android應用程序
- 29. 發送數據從iphone應用程序到mac桌面應用程序
- 30. 如何將數據從phonegap發送到快速應用程序?
他們沒有。你爲什麼認爲你需要這個? – EJP
@EJP根據我的理解,DHCP客戶端有時會在DHCP服務器獲取IP地址之前,通過將廣播標誌設置爲0來請求單播響應。DHCP服務器應該將響應發送到其在DISCOVER消息中傳送的MAC地址。喜歡聽到你對此的解釋。 – Hong