繁体   English   中英

到达EOS后重置Java Socket的InputStream

[英]Resetting the InputStream of a Java Socket after reaching EOS

我试图通过TCP / IP套接字连接两个单独的应用程序。 在这种情况下,两个应用程序都不是作为另一个应用程序的“客户端”运行,将它们描述为需要相互通信的两个独立服务器会更容易。

要接收数据我正在使用InputStream.Read()函数,一旦它收到值-1它应该停止处理。 但是,现在的问题是,如果另一组数据出现在InputStream已经在流结束( EOS ),那么所有发送的新数据都将被丢弃或忽略。 我找到解决这个问题的唯一方法是,一旦达到End of Stream,我关闭套接字并重新打开它,我认为可能会以其他方式更好地处理。

如何重置InputStream以便为下一组可能出现的数据做好准备?

从TCP / IP套接字读取时,您正在获取EOS,因为另一端已关闭其套接字的写入端。 一旦发生这种情况,TCP / IP协议就无法“取消关闭”连接。

如果您不想打开新连接,则需要在TCP / IP传输协议之上的应用程序协议,该协议允许您表示每个逻辑数据集的结尾...而不需要关闭。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM