【发布时间】:2016-06-18 03:21:41
【问题描述】:
嗨,我有一个 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) {
}
}
【问题讨论】:
-
如果@EJP 的回答对您不起作用(不过嗯),请尝试 ping 服务器或使用
isReachable()。 -
试过了,但它一直返回 false 其他什么?很重要,请某人?
-
isReachable()返回false不是意味着服务器断开了吗? -
是的,但即使服务器没有断开连接,它也总是返回 false
标签: java android sockets tcp client