嗨,我有一个 Tcp 客户端,我想检查他是否连接到服务器,我不是要检查他是否连接到 socket.isConnected() 或 socket.isBound() 我的意思是我想知道如果套接字现在已连接,但我找不到方法,因为当服务器断开连接时,他不会向客户端发送任何内容
这是我的代码:
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) {
}
}
最佳答案
当服务器断开连接时,readLine()
返回 null,您需要检查它,并在获取到连接时跳出读取循环并关闭连接。您目前的检查仅足以避免 NPE。
关于java - Android Tcp 客户端检查与服务器的连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35795234/