c – 将sockaddr_storage复制到另一个sockaddr_storage更改地址
发布时间:2020-12-16 06:54:42 所属栏目:百科 来源:网络整理
导读:嘿……正如最近的一个问题(没有人对最后的更改做出反应)我有一个问题,即分配由recvfrom填充的sockaddr结构. 正如我所知,我确实将我的sockaddr更改为sockaddr_storage,并在最后一刻将其更改为确保有足够的空间容纳地址… 但问题是 sockaddr_storage s1,s2; /*
嘿……正如最近的一个问题(没有人对最后的更改做出反应)我有一个问题,即分配由recvfrom填充的sockaddr结构.
正如我所知,我确实将我的sockaddr更改为sockaddr_storage,并在最后一刻将其更改为确保有足够的空间容纳地址… 但问题是 sockaddr_storage s1,s2; /*recv address into s1*/ s2 = s1; 或memcpy(& s2,& s1,sizeof(sockaddr_storage)); 不工作……任何人都有解决方案来复制sockaddr_storage或至少地址以将其保存在结构中并稍后获取原始值?… 谢谢. 编辑:sockaddr和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; 解决方法
您的复制似乎是正确的(至少是memcpy).我怀疑你是在误解结果.您可以尝试使用memcmp来验证副本是否成功.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |