我正在用一些端口號創建一個SerevrSocket。
但有時我會得到BindException
說Address already in use
。連接之前的Android檢查套接字狀態
所以有什麼機制,我可以檢查之前綁定ServerSocket是否正在使用或不。
還有什麼是處理BindException
的最佳方式?
我正在用一些端口號創建一個SerevrSocket。
但有時我會得到BindException
說Address already in use
。連接之前的Android檢查套接字狀態
所以有什麼機制,我可以檢查之前綁定ServerSocket是否正在使用或不。
還有什麼是處理BindException
的最佳方式?
聽起來像你在你的程序退出之前沒有正確關閉你的套接字。 套接字需要在onDestroy方法中關閉。
try {
ServerSocket server = new ServerSocket(0);
port = server.getLocalPort();
server.close();
}
catch (Exception e1){
Log.e("Error in Finding socket",e1.getMessage());
}
上面的代碼片段爲您提供了可用的免費端口。但正如前面提到的那樣,檢查套接字是否關閉以前的連接。