gpt4 book ai didi

java - 使用套接字手动发送 Keep-Alive 数据包

转载 作者:搜寻专家 更新时间:2023-11-01 03:28:44 27 4
gpt4 key购买 nike

我有一个名为“clientSock”的套接字。它已连接并正常工作。

我在线程中使用循环接收数据,如下:

char[] inputChars = new char[1024];
int charsRead = 0;

while (!stopNow) {

try {

if ((charsRead = inputStream.read(inputChars)) != -1)
{

System.out.println("Firing");
fire_dataRecieved(new String(inputChars, 0, charsRead)); //Fire event.
}

} catch (IOException e) {
//CLIENT HAS DISCONNECTED...
connectedClient.disconnect();
stopNow();
}
}

我正在考虑通过简单地向另一端发送“#KEEP-ALIVE”来发送“保持 Activity 数据包”。

我可以使用 sendStream.print("#KEEP-ALIVE") 来做到这一点。有更好的方法吗?如果没有,是否有一种有效的方法来检查您是否收到了数据包?或者已经存在的东西可以让你检查另一端是否还活着? clientSock.setKeepAlive(true) 不适合我。我需要按需检查另一端是否存活。

最佳答案

Is there a better way of doing this? If not, is there an efficient way of checking if you got the packet? Or something already there that allows you to check if the other end is alive?

如果连接出现问题,当您发送自己的保持 Activity 数据包时,TCP 堆栈会很快告诉您。它包含一种检查数据包是否以正确的顺序到达的方法。

现在,如果您想要明确确认您的数据包已收到,您应该让另一端发回确认。恕我直言,这有点矫枉过正,但这是您必须要做的。

如果您没有在合理的延迟内(10 秒就足够了)得到响应,并且如果 TCP 堆栈没有抛出某种错误,则意味着另一端的监听方/应用程序没有执行其任务工作。问题出在应用程序级别,而不是 TCP 堆栈级别。

关于java - 使用套接字手动发送 Keep-Alive 数据包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6330085/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com