2009-05-18 20 views
-3

我可以使用java nio发送小数据。使用java nio套接字通道写入大数据的问题

但是,如果我想发送一个非常大的数据,那么我的套接字通道无法正常工作。

message = "very large data"+"\n"; 
ByteBuffer buf = ByteBuffer.wrap(message.getBytes()); 
int nbytes = channel.write(buf); 

所有的数据都被发送。

我想从服务器读取数据,所以我使用BufferedInputStreaReader.readLine(); 在这种情况下,我没有得到任何错误我也不能检索到任何我传

感谢 迪帕克

+1

你是什么意思的“没有工作正常”?你有例外吗? – 2009-05-18 07:48:03

回答

1
write() 

Returns: 
The number of bytes written, possibly zero 

写不保证写你的整个BUF中的数据。 你需要检查写了多少,然后再写一次。 (也许还等待(选择),直到你可以再次写入。)

你或许应该还搜索了良好的java.nio教程... 如果你需要一个更简单的API,使用阻塞IO的java.io而不是...