На моем сервере, расположенном на устройстве 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 -exception) – m0skit0