我在用NIO的SocketChannel的時候碰到一個問題,
就是當Server端接受一個Client之後,
理論上我要attach一塊ByteBuffer給該channel。
問題是我從Client那邊傳過來的其實是一個自訂的Object,
(那是一個自訂的Class,先轉成ByteArray後在轉成ByteBuffer)
所以我在Server這邊不知道該allocate多大的sizs囧
以前我在寫C的時候,只要使用sizeof就可以搞定了,
可是在Java上面似乎沒有這個功能,可以請問一下各位前輩該怎麼辦嗎0rz
作者:
ssccg (23)
2015-06-11 09:22:00可以用sizeof的話大小本來就是確定的吧,算一下不就知道
作者:
popcorny (畢業了..@@")
2015-06-11 09:24:00變成ByteArray不就有Lenght了嗎,然後先傳len再傳data
樓上的前輩意思是說,Object的大小其實就是它轉成ByteArray後的size嗎@@
其實你的問題是serialize/deserialize怎麼傳type這很多方法可以做到,不過我不太確定你想要的是這個
作者:
Chikei ( )
2015-06-11 15:22:00轉個方向想,如果你用C要收不定長度的資料要怎麼收?一樣下去搞就好了
作者: ctrlbreak 2015-06-11 19:54:00
自訂protocol就可以了
其實很多現成的方法可以用 java自己的serialize或者轉json 不過最常見的還是google的protocal buffer