2012-06-27 64 views
1

我開發了C中的客戶端任務和C中的服務器任務。客戶端需要服務器IP地址來連接服務器。問題是:我不知道哪臺機器會運行客戶機,哪臺機器運行服務器,所以我只能在運行時知道服務器的IP地址 我的問題:在運行時客戶機將如何知道服務器的IP地址?服務器在運行時的ip地址

+1

爲什麼不使用dns條目呢?那可以配置成任何ip地址? –

+0

[DNS](http://en.wikipedia.org/wiki/Domain_Name_System)? –

+0

你能否進一步解釋你的想法?非常感謝你的幫助 – researcher

回答

0

使用第三方代理服務器,客戶端和服務器都事先知道。

只需在已知IP地址的任何位置設置服務器即可。 (使用雲服務器是一種便宜且快速的選項。)

當服務器啓動時,它將其IP地址發送給代理服務器,當客戶機啓動時,它會查詢代理服務器以供服務器連接。

當然你必須爲此編寫一個協議,但它可以非常簡單。

+1

它可以是非常簡單的,如果安全不是問題... – moooeeeep

+0

從判斷該帖子中,我認爲海報的大問題只是回答作業問題,而不是深入思考安全問題。 – uvesten

3

作爲評論者指出,您可能只是使用DNS。如果您無法以任何理由獲得DNS入口,或者服務器和客戶端將在同一網絡上運行,那麼您可能會考慮使用某種mDNS,並且在您的記錄中不需要DNS服務器並跑步。訪問http://en.wikipedia.org/wiki/MDNS#Multicast_DNS進行介紹性概述

0

首先您必須記住您要搜索的網絡有多大? 如果它對你有點問題,那麼你可以使用DNS它真的有用.....

+0

如果你知道它,我可以使用freepastry API,所以我可以做一個小規模的本地網絡,或者一個大規模(互聯網)... – researcher

0

如果你的服務器和客戶端將運行在你的本地網絡上,使用這個漂亮的MAC地址:FF-FF -FF-FF-FF-FF ...;)但是,如果名稱保持不變,DNS將是最好的選擇。

+0

我會說,當服務器開始運行時,我可以將主機名更改爲serv,可以我在服務器代碼(C)中這樣做?因爲,我不知道哪臺機器將運行服務器... – researcher

+0

像DHCP服務器那樣做...當客戶端是網絡上的新客戶時,他問DHCP服務器在哪裏(什麼IP)和服務器關聯。只需在服務器/客戶端上做同樣的事情。 –