2011-12-01 116 views
1

您是否可以在同一個套接字輸出流上使用PrintWriterObjectOutputStreamJava套接字輸出流

out_stream = new PrintWriter(socket.getOutputStream(), true); 
obj_stream = new ObjectOutputStream(socket.getOutputStream(); 

回答

1

可以但你必須照顧緩衝。 A PrintWriterObjectOutputStream接受將其轉換爲字節的數據,以便在底層流(這裏是套接字)處在某點處發送。在寫出這樣的字節之前緩衝就是等待一會兒,這樣字節可以以「大塊」而不是單獨發送。

閱讀關於緩衝的Javadoc,並在PrintWriterObjectOutputStream上使用flush()以確保將字節寫入套接字。

3

我會說是的,但我不認爲我會這樣做。

你想要做什麼?

+0

這是我到目前爲止完成的工作http://stackoverflow.com/questions/8272726/distributed-system,我現在試圖實現,工人機器必須發送'doSomething()'方法從經理。我想我可以通過使用ObjectOutputStream類發送一個對象來實現這一點? –

+0

@sudo_o我還沒有真正看到混合它們的必要性,當你需要讀取一些數據作爲對象和一些文本時,它會增加複雜性。但祝你好運: - ) – Fredrik

+0

沒有必要,我的框架以我想要的方式傳遞字符串,我不想打破它。現在我試圖發送一個對象,但不是在我的類中更改所有的'PrintWriters',而是在處理它時保持它獨立。然而,當我嘗試發送一個對象'w_obj.writeObject(obj);'它拋出和'IOExpection'。 –