2012-03-12 77 views
0

我有一個C服務器,它將下面的結構發送到客戶端,當成功連接和相關查詢來填充結構時。從C服務器發送一個結構到java(android)客戶端

#pragma pack(push) 
typedef struct{ 
    int a[5]; 
    char b[5][20]; 
    char title[5][50]; 
    }rinfo; 
#pragma pack(pop) 

所以我能夠成功地發送這個結構到一個C客戶端,它能夠正確讀取它。現在,如果我要爲Java客戶端做同樣的(我在Java弱),那麼我覺得我應該定義一個類相同的成員像

Class rinfo { 
    //the above members 
    } 

但後來我如何從閱讀結構java套接字?對於我使用的正常消息,請使用

BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream())); 

其中,套接字是我的套接字定義。我應該如何更改上述語句以讀取由我的C服務器傳遞的結構。此外,是否有任何併發​​症?任何與字節順序轉換有關的事情?我是一個java編程的新手..謝謝

回答

2

我的建議是使用JSON/XML作爲一種機制來打包數據。如果你把它放在一個ByteArray中,那麼你需要根據它們的大小來分割它們,如果大小不同,那麼你會發現它很困難,拋出異常。更進一步,您可以使用BufferedReader讀取字節中的數據,然後將它們轉換爲字符串以獲取完整數據。

許多要閱讀的樣本都可以在網上找到。

+0

可以請你提供一些鏈接,它在哪裏完成? – arvind 2012-03-12 06:29:59

+0

可以爲此您需要鏈接,JSON格式化? BufferedReader中?讀數據? – Vinay 2012-03-12 06:38:34

+0

XML格式化和使用BufferedReader讀取格式化數據 – arvind 2012-03-12 06:49:57

相關問題