2011-10-02 191 views
0

我正在實現這個example,因爲我想向多個客戶端廣播。在嘗試使用套接字發送另一個對象(已被序列化)時,我收到一個錯誤,說明套接字(在本例中)無法通過它發送對象。數據報套接字不能發送/接收對象嗎?通過數據報套接字發送一個對象java

+0

向我們展示你的代碼,並告訴我們你得到確切的錯誤信息。 –

+0

數據報不是最好的發送對象,因爲你不能保證所有的數據包都會到達。 –

+1

一些有用的鏈接:[Java Tip 40:通過數據報數據包進行對象傳輸](http://www.javaworld.com/javaworld/javatips/jw-javatip40.html)和[在java中使用UDP發送和接收序列化對象]( http://stackoverflow.com/questions/3997459/send-and-receive-serialize-object-on-udp-in-java) –

回答

4

不一般,沒有。數據報數據包一般都是比較小的 - 你可以嘗試序列化你的對象爲ByteArrayOutputStream包裹在ObjectOutputStream,然後嘗試字節數組事後送 - 但你可能會發現它變得太大的非常快。

使用更高效的序列化格式,如Protocol Buffers很可能讓你得到單個數據包中的詳細信息,但通常你會想序列化到一個,而不是一個單一 ...只要你開始嘗試將基於數據流的協議放在基於數據報的協議上 - 那麼只要它必須可靠,你就會很快地結束TCP。

如果你可以給我們你想要做什麼(包括可靠性約束? - 如何嚴重的是,如果一個數據包丟失)的詳細信息,我們也許能夠幫助你。

1

您最好的選擇是要麼使用TCP或其他庫如jGroups

的JGroups是可靠組播通信的工具包。