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