Java实现结构体,让字节流封送简单起来
和C/C++不同,Java中沒有結構體,聯合體。這是Java作為高級語言的進步,但也使得它在進行網絡字節流封送上顯得捉襟見肘。
這里所指的是在進行網絡編程,串口編程等需要和某些C語言中結構體形式定義的協議接口進行通訊時,Java由于缺乏結構體和字節數組之間的有效轉換方法,所帶來的編程上的困境。
按照通常的想法,我們需要自己去手動的一個字節,一個字節的拼湊,來實現C語言中結構體定義的數據包。在面對大量接口的時候,這樣做顯然絕非是可行的辦法。造成這個問題的根本原因是,指針這一對內存在字節量級操作的語法特性在Java當中是不成立的。其結果就是在C語言里面通過填充結構體來完成的字節流封送編程變得復雜。
既然這是一個相當普遍的問題,那么一定是有先人嘗試去解決過的。事實上卻是是這樣,通過一番努力,終于發現了JavaStruct和Javolution現成的兩個解決方案。我們不妨拿來為我所用。
JavaStruct
http://code.google.com/p/javastruct/wiki/HowToUseJavaStruct
這個實現比較輕量級,POPO的方式,還不支持聯合體,但是聯合體的問題,在編程中一般是可以避開的。
Javolution
http://javolution.org/
這個類庫比較龐大,對結構體和聯合體都有支持。
更詳細的操作細節,可以參考以上兩個鏈接中給出的內容。有了它們,數據封送在Java中也變得簡單起來了,不妨試一下吧。
總結
以上是生活随笔為你收集整理的Java实现结构体,让字节流封送简单起来的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深入解析JNA—模拟C语言结构体
- 下一篇: java美元兑换,(Java实现) 美元