作者pougoar ()
看板C_and_CPP
標題[問題] struct的data大小是可變的...
時間Wed Feb 25 22:35:38 2009
假設我有個
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
1F:推 tsaiminghan:1. 那是指標, 所以沒問題 02/25 22:38
2F:推 sunneo:訂定一個資料結構裡面放著各個資料量的大小 02/25 22:39
3F:→ tsaiminghan:2. 傳送的機制我不清楚, 但是接收的是指標的話 02/25 22:39
4F:→ sunneo:把該資料結構當作header,接收的人用該資訊產生各大小的區塊 02/25 22:39
5F:→ sunneo:接下來就是依序的把資料傳過去 02/25 22:40
6F:→ tsaiminghan:不要理我, 看S大的推文就好 02/25 22:41
7F:→ pougoar:謝謝S大的回應 不過我還是希望不管資料大小 傳送一次做完 02/25 22:47
8F:→ pougoar:不然我直接 宣個一個固定n的data 比n大的傳 分段傳 02/25 22:49
9F:→ pougoar:還是希望傳送的msg structure可以依使用者喜好變大變小 02/25 22:56
10F:→ pougoar:且一次就傳出去 謝謝 02/25 22:56
11F:推 ledia:cast 成 char * 傳過去, 另一邊再 cast 回你的 type 02/25 22:58
12F:→ ledia:長度問題, 你收資料會知道它多大, 要不然存個長度在 header 02/25 22:58
13F:→ ledia:或者是 zero end (如果你的 data 是 ascii) 02/25 22:58