看板 C_and_CPP 關於我們 聯絡資訊
假設我有個 struct msg { int length; char data[n]; }; 我想讓data的大小是可變的 然後透過網路送出去 這樣不知道要怎麼做比較好阿? 我只知道可以用 dynamic allocate struct msg { int length; char *data; }; msg->data= (char*)allocate(sizeof(char)*n); 1. 我很好奇 這樣動態的宣告data的大小會不會有問題阿? 2. 還有一個問題是此時的data放的是動態allocate到資料的位址 這樣我把msg傳出去 遠端的電腦收到這個data的指標也沒用阿 它也指不到這個動態的區域 所以我想請問到底怎麼宣告這個大小不一定的structure 且送出去的時候 遠端也可以順利的讀到這個structure 謝謝指教... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.160.123.202
tsaiminghan:1. 那是指標, 所以沒問題 02/25 22:38
sunneo:訂定一個資料結構裡面放著各個資料量的大小 02/25 22:39
tsaiminghan:2. 傳送的機制我不清楚, 但是接收的是指標的話 02/25 22:39
sunneo:把該資料結構當作header,接收的人用該資訊產生各大小的區塊 02/25 22:39
sunneo:接下來就是依序的把資料傳過去 02/25 22:40
tsaiminghan:不要理我, 看S大的推文就好 02/25 22:41
pougoar:謝謝S大的回應 不過我還是希望不管資料大小 傳送一次做完 02/25 22:47
pougoar:不然我直接 宣個一個固定n的data 比n大的傳 分段傳 02/25 22:49
pougoar:還是希望傳送的msg structure可以依使用者喜好變大變小 02/25 22:56
pougoar:且一次就傳出去 謝謝 02/25 22:56
ledia:cast 成 char * 傳過去, 另一邊再 cast 回你的 type 02/25 22:58
ledia:長度問題, 你收資料會知道它多大, 要不然存個長度在 header 02/25 22:58
ledia:或者是 zero end (如果你的 data 是 ascii) 02/25 22:58