加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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来验证副本是否成功.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读