gpt4 book ai didi

java - 为什么Socket Server关闭后,TCP接收方还能接收到数据?

转载 作者:行者123 更新时间:2023-11-29 08:16:41 25 4
gpt4 key购买 nike

我正在使用 Java 实现多线程 TCP 服务器-客户端应用程序。但是现在我遇到了一个奇怪的问题:当我关闭服务器套接字时,接收方仍然可以连续接收最后发送的数据包。由于套接字读取的细节是内核关注的问题,我无法找出原因。有人可以提供一些指导吗?提前致谢!编辑:涉及的代码很简单:

public void run() {
while(runFlag) {
//in = socket.getSocketInputStream();
//byte[] buffer = new byte[bufferSize];
try {
in.read(buffer);
//process the buffer;
}catch(IOException e) {
//
}
}
}

当关闭服务器套接字时,这个读取操作将不断地接收数据包(每次都进入while循环)。

最佳答案

操作系统内的 TCP/IP 堆栈缓冲连接两端的数据。发送方填充其套接字发送缓冲区,该缓冲区由设备驱动程序将数据包推送到线路上耗尽。接收器在 套接字接收缓冲区 中离线累积数据包,该缓冲区由应用程序读取耗尽。

关于java - 为什么Socket Server关闭后,TCP接收方还能接收到数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4331084/

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