java - 当远程套接字的设备关闭或应用程序强制关闭时,如何理解 java 远程套接字无法访问

标签 java sockets serversocket

我有一个 as3 serversocket,我们通过 java socket(一个 android 应用程序)连接到这个 serversocket。问题是,当 serversocket 应用程序强制关闭时,我无法找到一种方法来了解远程套接字已关闭或无法访问,除非尝试 flush() 一条消息到该套接字抛出管道损坏错误。我想以另一种方式解决这个问题的原因是不让服务器应用程序忙于连接检查消息?

最佳答案

TCP 连接不像河流那样连续不断地流动。它是在离散时间发送的一系列片段——因此更像是路上的汽车。因此,如果道路坏了,将无法收到通知,直到汽车试图到达另一端,但失败并给您回电。

您应该以合理的间隔(30 秒?)继续发送 cars,从而指示您的服务器在收到 NOOP 消息(No Operation 的缩写)时不执行任何操作。客户端将被编程为在连接空闲时开始发送 NOOP(30 秒内没有发送或接收消息),并且当驱动程序 回叫他无法到达目的地时,您关闭当前套接字并尝试创建另一个套接字。

关于java - 当远程套接字的设备关闭或应用程序强制关闭时,如何理解 java 远程套接字无法访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12329101/

相关文章:

java - 如何在生产者和消费者之间共享单个套接字?

java - 服务器套接字读取长字符串

java - 如果我关闭了一个ServerSocket,那么ServerSocket接受的Sockets是否也会被关闭?

java - TCP Server 无法接收 GPRS Modem 发送的数据

java - 从非 Activity 状态启动对话框

java - 构建脚本 - 如何判断 apache tomcat 是否正确部署了我的 webapp?

java - Android - 在后台监听传入的 TCP/Socket 消息

java - ZeroMQ 多个 TCP 连接

java - 如何同时随机生成两个数字而不使它们重复?

c - Socket发送二进制数据而不是文本数据