主題:怎么傳輸一個結構體? 共有70546人關注過本帖 |
---|
lm |
1樓 |
![]() |
怎么傳輸一個結構體? ![]()
在pc機上,發送端把這個結構體送到字符緩沖區中,接收端通過一個
字符緩沖區接收,然后強制轉換為結構體類型,這種方法傳輸結構體 不會出錯。 我在NB200上用同樣思路傳輸結構體,接收結果不正確,請問該如何設計此程序? |
單帖管理 | 引用 | 回復 ![]() |
lm |
2樓 |
![]() |
![]()
補充一點,我的相關代碼如下:
結構體定義:typedef struct { char a; ... short b; ... }univdata; 用字符型指針指向此結構體: univdata *asdu; asdu=(univdata *)malloc(sizeof(univdata)); asdu->a=<|>p<|>;      /*結構體賦初值*/ ... char *txbuf=(char *)asdu;  發送此結構體: ConnWrite(conno,txbuf,len,1); btw:傳輸字符串的結果是正確的,說明程序沒有問題。請問對結構體該如何處理? |
單帖管理 | 引用 | 回復 ![]() |
zhl |
3樓 |
![]() |
![]()
將結構類型強制轉換為char類型后,再調用ConnWrite(...)函數進行發送,其中len為該結構的長度。看你的代碼沒有問題,再看看是否有別的什么原因造成呢?
|
單帖管理 | 引用 | 回復 ![]() |
lm |
4樓 |
![]() |
![]()
我找不出原因,但考慮到可能是字節對齊和主機網絡字節順序的問題
NB200的tcp/ip運行庫沒有提到這方面的問題,請問對此是如何處理的? |
單帖管理 | 引用 | 回復 ![]() |
zhl |
5樓 |
![]() |
![]()
可參考我們提供的TCPDEMO程序中的TCPSvr.prj,在該程序有關于接收數據結構(結構內容包括時間、日期等)的應用。
|
單帖管理 | 引用 | 回復 ![]() |