當我突然改變WiFi網絡時,我的應用中的serversocket會發生什麼?我猜它會關閉,因爲我的設備會得到一個新的IP,至少在TCP中,UDP MulticastSocket是否也容易出現這種情況?以及如何在網絡更改時結束以前的服務器套接字線程並啓動一個新線程?一種解決方案是使用超時,另一種方法是使用一個標誌來指示無限循環是否應該結束,但由於監聽套接字是一種阻塞功能,因此無論如何它都會產生異常/錯誤。當我切換wifi網絡時,TCP/UDP serversocket會發生什麼?
任何想法可以理解的! :)
編輯:我的服務器線程的示例。
ServerSocket ss = new ServerSocket(4445);
while(true){
Socket socket = ss.accept();
ObjectInputStream in = new ObjectInputStream(socket.getInputStream());
Object obj = in.readObject();
Log.i("TAG", "Received: " + obj.toString());
in.close();
socket.close();
}
它是一個whiel,因爲我研究過這一點:不UDP首先建立某種聯繫?隨機爆炸沒有連接的UDP數據包只是看起來不會工作 – TheLQ
@TheLQ:據我所知,它只是傳輸一個包含目標ip和端口的數據包。它不保證交付。它直到網絡基礎設施來傳遞數據包。因爲它是無連接的,所以它不會受到網絡故障的影響。 –
@TheLQ UDP是無連接協議,因此不建立連接。 (也可以調用connect()在UDP套接字但這一切確實設置爲發送一個默認的IP地址/端口()發送到,它實際上並沒有改變任何事物的邏輯) –