1

在套接字连接保持打开状态时从 TCP 套接字读取时,有没有办法检测 EOF?

我见过的大多数例子都是这样的:

int n=0;
While((n = read.inStream(data)) != -1){
    destType.write(data, 0, n);
}

然而,这意味着每次您想要接收一条新数据时都必须创建一个新连接。在我的情况下,这是一个恒定的图像流,以字节形式通过套接字发送,我想处理每个图像而不必关闭它们之间的连接,这样我就可以拥有与单个用户关联的所有图像,以及它只是更有效地不要频繁地打开和关闭连接。

那么有没有办法做到这一点或一些关于可能替代方案的信息?

4

1 回答 1

1

否 - 如果连接保持打开状态,则流尚未到达终点。流报告 EOF然后稍后拥有更多数据的想法违背了流的原则。

如果你想通过 TCP 流发送多条消息,最简单的方法是在每条消息前面加上它的长度:

HEADER BODY
HEADER BODY
HEADER BODY

然后客户端会读取头部,找出消息的长度,读取它,然后读取下一个头部,等等。

于 2012-01-20T10:52:54.163 回答