小编Pet*_*ell的帖子

使用TCP KeepAlive检测套接字断开

我正在开发一个服务器,通过TCP/IP托管第三方设备,并且遇到突然的连接丢失(设备通过蜂窝连接).我需要找到一种方法来检测断开连接,而无需将数据写入设备本身.

我已经看过使用TCP keepalive功能,但Java似乎不允许任何调整keepalive操作的时间.

这样做有什么建议的方法吗?

我的简化套接字代码如下:

public class Test2Socket {
    public static void main(String[] args) {
        try {
            ServerSocket skt = new ServerSocket(1111);

            Socket clientSocket = skt.accept();

            clientSocket.setKeepAlive(true);

            System.out.println("Connected..");

            BufferedReader input = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));

            String inputLine;

            while((inputLine = input.readLine()) != null)
            {
                System.out.println(inputLine);
            }

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

任何反馈将不胜感激.

java sockets ip multithreading tcp

9
推荐指数
1
解决办法
2万
查看次数

标签 统计

ip ×1

java ×1

multithreading ×1

sockets ×1

tcp ×1