2016-03-04 2 views
1

Привет, у меня есть клиент Tcp, и я хочу проверить, подключен ли он к серверу, и я не хочу проверять, был ли он подключен к socket.isConnected() или socket.isBound () я имею в виду, что я хочу знать, если сокет подключен прямо сейчас, и я не мог найти способ сделать это, потому что, когда разъединение сервера он dosnt послать что-нибудь клиентAndroid Tcp Client проверяет соединение с сервером

вот мой код:

public void sendMessage(String message) { 
    if (out != null && !out.checkError()) { 
     out.println(message); 
     out.flush(); 
    } 
} 

public void stopClient() { 
    mRun = false; 
} 

public void run() { 

    mRun = true; 
    try { 
     //connecting 
     InetAddress serverAddr = InetAddress.getByName(SERVERIP); 
     Socket socket = new Socket(serverAddr, SERVERPORT); 
     sss = socket; 


     try { 
      //send the message to the server 
      out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())), true); 
      //receive the message that the server sends back 
      in = new BufferedReader(new InputStreamReader(socket.getInputStream())); 

      HelloService.firstTouch(); 


      //in this while the client listens for the messages sent by the server 
      while (mRun) { 
       serverMessage = in.readLine(); 

       if (serverMessage != null && mMessageListener != null) { 
        //call the method messageReceived from MyActivity class to inform main activity that a message has received 
        mMessageListener.messageReceived(serverMessage); 
       } 
       serverMessage = null; 
      } 

     } catch (Exception e) { 

     } finally { 

      socket.close(); 
     } 

    } catch (Exception e) { 

    } 
} 
+0

Если ответ @ EJP не работает для вас (хм-м), попробуйте выполнить ping-сервер или использовать 'isReachable()'. – Onik

+0

попытался, но он все время возвращал ложь что-нибудь еще? его очень важно, пожалуйста, кто-нибудь? –

+0

Не 'isReachable()' return 'false' означает, что сервер отключен? – Onik

ответ

0

Когда сервер отключается, readLine() возвращает значение null, которое необходимо проверить, и выйти из цикла чтения и закрыть соединение, если вы его получите. Ваша текущая проверка достаточна, чтобы избежать NPE.

+0

Дело в том, что он не возвращает ничего, что я уже пробовал –

Смежные вопросы