2014-09-11 173 views
-2

我正在學習套接字和客戶端 - 服務器應用程序。看起來好像推薦的方法是服務器應該有一個固定的IP地址,以便客戶端可以找到它。它是否正確?似乎應該有某種類型的啓動技術,在初始化時,服務器(或客戶端)上的程序通常可以將其IP地址廣播到網絡上的其他計算機,以便在服務器IP地址更改客戶端仍然可以找到它。這可能嗎?我相信「組播」可能會有所幫助,但似乎並不總是支持此功能,並且/或者路由器/交換機必須配置爲接受此功能,否則該技術將失敗。它是否正確?我發現有很多方法可能使用UDP來廣播到網絡上的任何一臺計算機,但我不清楚接收方計算機如何在沒有套接字設置的情況下以清晰的方式訪問它 - 如果沒有套接字,就不會有混亂其他電腦已經在同一端口上廣播了?該程序是否只是一個協議問題,以便識別接收到的數據包?我只需要更多地瞭解套接字?任何和所有的建議/指針,我可以看看將不勝感激。非常感謝!查找服務器的IP地址

回答

1

我正在學習套接字和客戶端 - 服務器應用程序。它似乎 好像推薦的方法是服務器應該有一個固定的IP地址 ,以便客戶端可以找到它。它是否正確?

是的。

看起來好像應該有一些類型的啓動技術,其中上 初始化服務器(或客戶端)上的程序可能一般 廣播自己的IP地址給網絡上的其他計算機,所以 那如果服務器IP地址發生變化,客戶端仍然可以找到 它。這可能嗎?

是的。

我認爲,「多播」可能會有所幫助,但它好像並不總是支持 和/或路由器/交換機必須配置爲 接受本或技術會失敗。它是否正確?

不,組播地址在這裏沒有什麼幫助,你提到了爲什麼,而且你應該事先知道多播地址。

我看到有辦法也許是使用UDP廣播到任何 網絡上的計算機,但它不是我清楚如何收件人 計算機可以不已經是一個插座 一套以明確的方式訪問這個如果其他計算機已經在同一個端口上廣播了 ,會不會有混淆?

您只需在一段時間內宣傳您的客戶,例如每5秒或每1分鐘一次,無論間隔多長時間,您都可以發現。如果有人也在這個端口上發送 - 那麼你應該使用一些獨特的結構,幻數等來區分一個包。

這只是一個協議問題,程序識別 接收的數據包?

是的。在UDP上。

我只需要了解更多關於套接字?

絕對是的。我建議這本書:Unix Network programming,這很好,即使你運行非UNIX環境。