多线程JAVA应用程序中的套接字读取问题

时间:2011-05-16 13:48:11

标签: java multithreading sockets

我们在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类的类型。

背后可能的原因是什么?请分享您的观点。

3 个答案:

答案 0 :(得分:0)

你提到这是一个多线程应用程序,所以如果没有看到你的代码,我的怀疑就在于另一个可能操纵你的Socket或InputStream的线程。线程问题可能非常难以发现和调试。

答案 1 :(得分:0)

  

以下是代码段

> socket.getInputStream.read(buffer);

不,不是。该片段无法编译。而正确的片段显而易见。

可能错过数据的唯一方法是(i)如果另一个线程同时读取套接字,或者(ii)如果您一次使用BufferedInputStream或BufferedReader而不是另一个。

答案 2 :(得分:0)

感谢您的评论。问题是多线程同步,我处理相同,它工作正常。