androidsocket非同步
『壹』 android socket外網
首先 外網是可以訪問的 前提是你的外網地址是固定的
你可以在路由器上設置埠映射(部分路由器不叫這個名稱 )
比如說 你在區域網的伺服器地址是 192.168.2.3 埠 4000
那麼 你可以在上網的路由器上設置 埠映射 設置埠 XXXX 映射到192.168.2.3的4000埠
那麼只要你對外網固定地址 XXXX發起socket連接 就會被轉到192.168.2.3的埠4000上去
和平常的socket連接一樣
至於花生殼,是針對上網時動態IP的情況,每次撥號都分配新的IP
訪問花生殼域名,域名就會指向你的動態IP上去
只要能得到動態IP 就和固定IP一樣訪問了。
java 也可以根據域名獲得IP
InetAddress[] myServer = null;
public InetAddress[] getServerIP(String domain) {
try {
myServer = InetAddress.getAllByName(domain);
} catch (UnknownHostException e) {
e.printStackTrace();
}
return (myServer);
}
網上復制的 沒編譯過 不過看了應該沒錯
『貳』 android studio連接io.socket:sokect.io-client伺服器的條件
條件是socket協議。
WebSocket是跟隨HTML5一同提出的,所以在兼容性上存在問題,這時一個非常好用的庫就登場了——Socket.io。
socket.io封裝了websocket,同時包含了其它的連接方式,你在任何瀏覽器里都可以使用socket.io來建立非同步的連接。socket.io包含了服務端和客戶端的庫,如果在瀏覽器中使用了socket.io的js,服務端也必須同樣適用。
socket.io是基於Websocket的Client-Server實時通信庫。
socket.io底層是基於engine.io這個庫。engine.io為socket.io提供跨瀏覽器/跨設備的雙向通信的底層庫。engine.io使用了Websocket和XHR方式封裝了一套socket協議。在低版本的瀏覽器中,不支持Websocket,為了兼容使用長輪詢(polling)替代。
『叄』 我在做一個android客戶端,自己寫服務端,由於服務端的經驗不多,所以請教各位,幫幫忙!
首先,android客戶端與伺服器端的通信用socket和http通信都是可以實現的,主要看你的需求是什麼,如果需要實時通信,那麼選用socket。否則選用http通信。因為socket會建立通信管道。耗費資源過大。
其次,沒太明白你說得處理並發量的目標5000是什麼意思。不知道是不是可以理解為你要同時與伺服器進行多方數據交互。如果是建議你使用socket通信。並且可以將你得客戶端並發處理用非同步任務的方式處理(當然多線程也可以,因為非同步任務本身就是多線程)。android客戶端的耗時操作都不要放在UI線程里處理,因為這樣會出現5秒響應機制導致你得程序崩潰。
不知道上面的回答有沒有幫到你,如果有,希望多給追加點分數,10分除了我估計沒人願意幫你寫這么多字回答的