我们在Windows上的多线程JAVA应用程序中创建了一个套接字,它必须以顺序形式读取数据。但是我们在从输入流中读取数据时遇到了问题
例如,数据顺序是
1-100 (1,2,3,4,...100)
101-200
201-200
and so on..
我们能够以正确的顺序方式从1-100读取,但不能读取下一组数据,即101-200。但是可以正确地读取更多数据集。
数据正好在我们的末尾(如etheral log's中所示),但是流不能读取它。
以下是代码段
socket.getInputStream.read(buffer);
socket是Socket类的类型。
背后可能的原因是什么?请分享您的观点。
答案 0 :(得分:0)
你提到这是一个多线程应用程序,所以如果没有看到你的代码,我的怀疑就在于另一个可能操纵你的Socket或InputStream的线程。线程问题可能非常难以发现和调试。
答案 1 :(得分:0)
以下是代码段
> socket.getInputStream.read(buffer);
不,不是。该片段无法编译。而正确的片段显而易见。
可能错过数据的唯一方法是(i)如果另一个线程同时读取套接字,或者(ii)如果您一次使用BufferedInputStream或BufferedReader而不是另一个。
答案 2 :(得分:0)
感谢您的评论。问题是多线程同步,我处理相同,它工作正常。