我對網絡編程沒有太多經驗,我正在編寫一個多平臺系統,要求每個設備能夠在同一局域網內找到其他設備,我在想什麼是一個正確的做法,可能是這裏的人能向我提供一些建議,這是我的設計要求,什麼是在局域網上實現設備發現的最佳方式
我使用C++和解決方案必須是跨平臺的,這至少能夠在iOS上運行時,Windows ,Android。
該系統應該是相當輕的重量,並在沒有特殊設置或網絡要求的情況下工作,如果可能的話。
下面是到目前爲止我的頭腦風暴不同的方法,
使用UPnP協議,但我不是很熟悉的話,並沒有顯得有關於如何使用多實例它在代碼中。
使用傳統的套接字方法,在每個設備上創建服務器/客戶端,並將數據包發送到LAN上的每個IP。之後手動完成所有工作。糾正我,如果我錯了,如果我發送一個數據包到廣播地址,這意味着系統會自動發送我的數據包到子網內的每個IP?
使用外部服務器,所有客戶端將註冊到該外部服務器,然後從服務器獲取其他客戶端的信息。但是,我不確定每個客戶端應該連接哪些信息以確定它們在同一個LAN中。
讓我知道如果我在想什麼使任何感官和任何建議非常感謝。
通常將UDP數據包發送到廣播地址,並提供稍後進行常規連接的設置信息。發送到廣播的包將被髮送到該子網中的每個設備。我建議啓動Wireshark以查看幕後發生的情況。 – Brad 2013-04-26 14:54:44
感謝您的信息,但我聽說路由器可以設置爲停止廣播,並且它通常是LAN中的默認設置。真的嗎?如果是的話,那麼這種方法是不是很可靠,然後 – NachoChip 2013-04-26 18:17:00
不,路由器會在您的網絡和另一個網絡之間。廣播數據包僅發送到您的網絡,因此路由器的配置對它們沒有影響。另外,如果路由器能夠做到這一點,你的網絡將無法工作。廣播數據包對於基本功能很重要,例如DHCP,UPnP和Bonjour(例如Marko的答案)。 – Brad 2013-04-26 18:38:46