android 打电话socket断开,如何发现客户端android socket断开连接?

本文探讨了在服务器端如何检测Android客户端通过Socket断开连接的问题。当客户端关闭WiFi或应用程序时,服务器未能正确识别通信结束。文章中提供了一段Java代码,展示了在接收客户端消息时遇到的问题,即`receive()`方法始终返回null。作者指出,这可能是由于缺少适当的异常处理和断开连接检测机制导致的。
摘要由CSDN通过智能技术生成

我有一个服务器端的问题,当我特意拔掉android wifi服务器无法检测到通信结束。如何发现客户端android socket断开连接?

当关闭应用程序服务器时发现。当客户端断开连接,但是当我关掉了wifi的机器人,该方法被搁置

/**

* Method Responsible for receiving last message from client socket.

*

* @return

* @throws java.io.IOException

*/

public String receive() throws IOException {

//receiver is a Scanner -> receiver = new Scanner(socket.getInputStream());

while (receiver.hasNextLine()) {

return receiver.nextLine();

}

return null;

}

@Override

public void run() {

//loop waiting for the client message

while (true) {

String response;

//receive message

try {

response = receive();

//if the message come null means that the client disconnected

if (response == null) {

break;

}

} catch (Exception e) {

break;

}

//mount message.

Message msg;

try {

msg = new Gson().fromJson(response, Message.class);

} catch (Exception e) {

continue;

}

//manage message in new thread

new Thread(new Runnable() {

@Override

public void run() {

manageMessage(msg);

}

}).start();

}

close();

}

的方法总是返回null。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值