我在客户端上有以下代码:
DataInputStream dis = new DataInputStream(socketChannel.socket().getInputStream());
while(dis.available()){
SomeOtherClass.method(dis);
}
Run Code Online (Sandbox Code Playgroud)
但是available()不断返回0,尽管流中有可读数据。因此,在要读取的实际数据完成之后,空数据将传递到另一个要读取的类,这将导致损坏。
经过一番搜索;我发现available()在与套接字一起使用时这是不可靠的,我应该从流中读取前几个字节以实际查看是否有数据可解析。
但就我而言 我必须将DataInputStream我从套接字获得的引用传递给我无法更改的其他类。
是否可以从中读取一些字节DataInputStream而不破坏它,或者有其他建议?