我需要在套接字上接收一個嵌套整數數組,例如,在c socket上接收整數數組的最佳方法
[[1,2,3],[4,5,6],...]
子陣列總是3個值長,主陣列的長度varries,但事先已知。
搜索谷歌給了我很多選擇,從發送每個整數到只是將緩衝區轉換爲我認爲應該是的東西(似乎對我不安全),所以我正在尋找一種安全快速的方法去做這個。
我需要在套接字上接收一個嵌套整數數組,例如,在c socket上接收整數數組的最佳方法
[[1,2,3],[4,5,6],...]
子陣列總是3個值長,主陣列的長度varries,但事先已知。
搜索谷歌給了我很多選擇,從發送每個整數到只是將緩衝區轉換爲我認爲應該是的東西(似乎對我不安全),所以我正在尋找一種安全快速的方法去做這個。
假設帶寬和數據大小不是非常重要,我會建議,將數組序列化爲字符串是一種安全且獨立於平臺/體系結構的方式來傳輸此類數組。這具有以下優點:
的缺點是,有更多的字節具有在茶要發送nnel作爲一個很好的二進制編碼最小的必要條件。
如果您想要使用現成的庫來序列化/反序列化數組,您可以查看可用的許多JSON庫之一。 http://www.json.org/提供了幾個實現的列表。
的「子陣列」並不重要,你到底要去下傳輸3 ñ號和具有接收器將其解釋爲ñ排,每排3號。
對於任何外部表示,你將不得不選擇一個精度,即你應該爲每個整數使用多少位。 int
類型沒有很好的規定,所以可能選擇32位,並將每個數字視爲int32_t
。
只要外部整數表示具有多個字節,就必須擔心這些字節的順序。傳統上使用網絡字節排序(「big endian」),但現在許多系統都觀察到大多數硬件是小端的,所以他們使用它。在這種情況下,您可以一次性將整個源數組寫入套接字(假設您使用的是TCP/IP套接字),可能是由行數或整數總數所支持。
序列化,你想要的方式,兩個主要的可能性:
在C中,您可以使用XDR例程來正確編碼您的數據。