Sun*_*hoo 5 java sockets
我用 Java 编写了一个套接字程序。服务器和客户端都可以相互发送/接收数据。但是我发现如果客户端使用 TCP 向服务器发送数据,那么一旦服务器接收到数据,TCP 内部就会向客户端发送确认。我想检测或处理该确认。如何在 TCP 中读取或写入数据以便处理 TCP 确认。谢谢。
Eri*_*lje 6
这根本不可能,即使您直接针对本机 OS 套接字 API 使用 C 进行编程。套接字 API 的要点之一是它为您抽象了这一点。
在 TCP 层发送和接收数据不一定与您发送或接收数据的 Java 调用相关。您在一次 Java 调用中发送的数据可能会被分成几部分,这些部分可能会被单独缓冲、发送和接收,甚至可能会乱序接收。
有关此问题的更多讨论,请参见此处。
Gra*_*ray 2
通过 TCP 套接字发送的任何数据都会在两个方向上得到确认。就 TCP 有线通信和应用程序信令而言,从客户端发送到服务器的数据与从服务器发送到客户端的数据相同。正如@Eric 提到的,没有办法获取该信号。
您可能正在谈论等待服务器响应时超时。您想要检测响应时间是否太长。客户端的消息是否可能大于服务器的响应,因此缓冲会妨碍响应而不是初始请求?您是否尝试过使用非阻塞套接字?
如果您还没有查看过NIO 代码,您可能想查看一下。它有许多类,可以让您对套接字通信进行更细粒度的控制。
归档时间:
15 年,5 月 前
查看次数:
8083 次
最近记录:
8 年,1 月 前