在我的位於android設備的服務器中,如果客戶端的數量超過特定數量,那麼服務器關閉套接字。但在我的客戶端(其他Android設備),我得到一個力量關閉。我如何優雅地處理它? 這裏是我的客戶機上的連接部分:優雅地處理socket.close()
serverIpAddress = serverIp.getText().toString();
if (!serverIpAddress.equals(""))
{
try
{
InetAddress serverAddr = InetAddress.getByName(serverIpAddress);
SocketAddress sockaddr = new InetSocketAddress(serverAddr, 5000);
nsocket = new Socket();
nsocket.connect(sockaddr);
}catch(Exception e){
Log.i("Connect", "Connection Error");
}
if (nsocket.isConnected()){
score.setText("Your score is " + sc);
serverIp.setVisibility(View.GONE);
connectPhones.setVisibility(View.GONE);
enterIP.setVisibility(View.GONE);
Log.i("Connect", "Socket created, streams assigned");
Log.i("Connect", "Waiting for inital data..." + nsocket.isConnected());
receiveMsg();
}
向通過套接字使用的協議添加一個關閉過程。因爲我們不知道你的協議是什麼,所以我們很難幫助你這麼做。也許服務器可能會發送客戶端「稍後再試」消息,然後客戶端將關閉套接字?這樣,只有當客戶端沒有響應時,服務器纔會關閉,並且通常它會乾淨地發生。 –
還捕捉'異常'[通常被認爲是一個不好的做法](http://stackoverflow.com/questions/4716353/if-catching-null-pointer-exception-is-not-a-good-practice-is-catching -例外) – m0skit0