Java Server - TCP套接字检测EOF而不关闭套接字连接

时间:2012-01-20 10:50:33

标签: java sockets tcp persistent-connection

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

我见过的大部分例子都是:

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

但是,这意味着每次要接收新数据时都必须创建新连接。 在我的情况下,这是一个恒定的图像流,作为字节通过套接字发送,我想处理每个图像,而不必关闭之间的连接,以便我可以让所有图像与单个用户相关联,以及它更高效的是不能以高频率不断地打开和关闭连接。

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

1 个答案:

答案 0 :(得分:1)

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

如果要在TCP流中发送多条消息,最简单的方法是为每条消息添加长度:

HEADER BODY
HEADER BODY
HEADER BODY

然后客户端将读取标题,找出消息的长度,读取它,然后读取下一个标题等。