gpt4 book ai didi

c++ - 将 sockaddr 分配给另一个更改地址?

转载 作者:行者123 更新时间:2023-11-28 08:27:13 25 4
gpt4 key购买 nike

在尝试以下操作时,第二个 sockaddr 中的地址发生了变化:

/*Stuff*/
sockaddr add1, add2;
recvfrom(/*socket*/, /*buffer*/, /*count*/, /*flag*/, &add1, /*fromlen*/);

add2 = add1; //The sa_data - part changes O_o...

/*Stuff*/

有人知道为什么吗?...

编辑:1.我将 sockaddr 更改为 sockaddr_storage,它绝对有足够的空间用于 sockaddr_in!2. 我在初始化时将结构 memset 为零3. 我为我的复制/分配愿望写了一个复制规则:

memcpy(&AddrTarget, &AddrSource, sizeof(sockaddr_storage));

但这也无济于事!...我绝望了:(...

最佳答案

当您调用 recvfrom() 时,fromlen 是如何设置的?如果 fromlen > sizeof(add1),您可能不小心覆盖了 add2

Beej's Guide建议您使用 struct sockaddr_storage 类型的局部变量,保证其足够大以容纳任何正在使用的 struct sockaddr_foo

关于c++ - 将 sockaddr 分配给另一个更改地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3580714/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com