2009-05-18 24 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而不是...