簡體   English   中英

通過TCP套接字編碼和發送XDR結構(C-Linux)

[英]Encode and send an XDR struct over a TCP socket (C - Linux)

我必須問以下問題:

我必須發送以下XDR消息:

struct Responde{
 float numbers<>;
 bool end;
}

我知道如何對數組(xdr_array)和布爾(xdr_bool)進行編碼,但是我該如何:

1)編碼結構? 2)通過套接字發送結構?

感謝所有人,但是我不了解XDR,因此必須使用它。 再次感謝。

Nb:標題顯示方式我指的是C語言和Linux環境。

當然,最靈活的解決方案是使用rpcgen工具將XDR定義編譯為C代碼,然后可以對其進行編譯並在C應用程序中使用。 但是,如果您不想在項目中引入這種依賴性,則當然可以手動編寫序列化代碼。

RFC 1831將為您提供有關如何序列化此結構的詳細說明,但這是您需要為示例了解的內容:

  • XDR中的所有數字均按大端順序編碼。
  • 結構中的所有字段都對齊為4個字節,並且這些字段按照聲明的順序串聯在一起。
  • float將數字編碼為32位浮點數。
  • 浮點數的可變長度數組被編碼為32位整數,其中包含元素數量,后跟浮點數。
  • bool將布爾值編碼為32位整數,其中,將true值編碼為數字1 ,將false值編碼為數字0

例如,如果您的結構填充了3個浮點,並且值為true,則將獲得以下字節流:

00 00 00 03  xx xx xx xx  yy yy yy yy  zz zz zz zz  00 00 00 01

其中xyz的序列是浮點數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM