通過adsl聯網的兩台主機怎麼才能相互通訊呢?
對於一般的adsl使用者來說,通過adsl聯網都是動態ip,即它們的ip位址是不固定的。當它們聯上外網,電信給它乙個外網ip位址,當它斷開後電信會**此ip位址。重新聯網後,電信會根據剩餘的ip位址列表給出乙個新的外網ip位址。
在socket通訊中,我們都是通過"ip,port"來通訊的。為了獲得通訊主機的實時外網ip位址,我們可以採用動態網域名稱的方式來解決。動態網域名稱的繫結,這裡就不在詳述了。網上例程很多,而且這也不是本文的重點。以花生殼為例,當通訊的主機裝上花生殼客戶端後,並通過客戶端繫結好了動態網域名稱。比如我的動態網域名稱是cloud95.xicp.net, 這時我們通訊的客戶端可採用以下方式,獲得通訊主機ip。
wsadata wsadata;
wsastartup(0x0202, &wsadata); //初始化套接字型檔
hostent* host= gethostbyname("cloud95.xicp.net");
char* pszip= (char*)inet_ntoa(*(struct in_addr*)(host->h_addr));
pszip中就是通訊主機的ip位址。如果你的主機是通過路由器聯上外網的,那麼你還需要在路由器上設定一下埠對映。將你的本機通訊埠a對映為外網埠b。socket通訊時,就可以用"pszip,b"來通訊了。 Android socket區域網通訊
然後需要設定網路許可權,也就是在androidmaifest裡面新增internet許可權 public static string getlocalipaddress catch socketexception e return null 就可以獲取到本機的ip位址。在做第一次連線測試的時候,只需...
android區域網通訊框架
該框架支援訊息失敗重複,訊息傳送成功或失敗的返回,支援心跳包,支援服務端斷網重連,話不多說直接上圖 上圖是整個框架的結構圖 tcpservice是服務端通訊的類,負責監聽客戶端連線請求,維護客戶端列表 finder是服務端,客戶端端搜尋的基類 subordinatefinder是服務端用來發現客戶端...
python udp區域網通訊程式
使用自帶的socket通訊模組利用tcp進行網路通訊 匯入socket模組 import socket defmain 建立udp套接字 udp socket socket.socket socket.af inet,socket.sock dgram try 鍵盤錄入ip位址 deta ip in...