我已經在C中定義了以下結構,並且我想使用Berkeley套接字上的Linux客戶端和服務器之間的TCP連接發送:通過TCP連接傳送與Berkeley套接字可變結構尺寸
struct Argument{
int pid;
int length;
chat op;
char *data;
};
因爲我有一個「char * data」,它是一個指針,可以用於在本地發送機器中分配可變大小的數據,所以我必須在兩個不同的時間將此結構發送到接收端。 第一次,我只發送固定變量,即前三個變量。然後在接收時,我分配一個長度大小的緩衝區來第二次接收數據部分。
所以我的問題是有反正只有一次發送這個結構到另一側的可變數據字段大小,而不是兩次,因爲我在做什麼?
if (write(peer_fd, (struct Argument*) arg, sizeof (struct Argument)) < 0)
{
close(peer_fd);
return -1;
}
非常感謝。
如果在分配結構時知道'data'的大小,則可以使用0長度數組。 – imreal
@Nick爲什麼要使用黑客,如果你有完全合法的解決方案? – this
只是拋出那裏,OP似乎想要一個塊。除此之外,它們在我住的地方是完全合法的:) – imreal