4
嘿...正如在最近的一個問題中(沒有人對最後的更改做出反應),我在分配由recvfrom
填充的sockaddr結構時遇到問題。將sockaddr_storage複製到另一個sockaddr_storage更改地址
正如我已被告知,我沒有改變我的sockaddr到struct sockaddr_storage的和鑄造它在最後一刻,以確保具有地址空間不足的...
但
sockaddr_storage s1, s2;
/*recv address into s1*/
s2 = s1;
問題
或memcpy(&s2, &s1, sizeof(sockaddr_storage));
不要工作...任何人有一個解決方案複製struct sockaddr_storage的或至少地址保持在一個結構,並得到後來的原始值?...
謝謝。
編輯:定義爲SOCKADDR和struct sockaddr_storage的(MSDN):
struct sockaddr {
ushort sa_family;
char sa_data[14];
};
typedef struct sockaddr_storage {
short ss_family;
char __ss_pad1[_SS_PAD1SIZE];
__int64 __ss_align;
char __ss_pad2[_SS_PAD2SIZE];
} SOCKADDR_STORAGE, *PSOCKADDR_STORAGE;
對於那些不知道,你能提供sockaddr_storage結構/類的定義嗎? – Arun 2010-08-29 15:41:13
將其添加到編輯部分 – Incubbus 2010-08-29 16:09:30
謝謝。基於這個定義,我期望memcpy能夠工作。你能告訴我們爲什麼你認爲memcpy不起作用嗎? – Arun 2010-08-29 16:32:34