gpt4 book ai didi

c++ - 为什么我从这个 sendto() 得到 "Invalid argument"?

转载 作者:搜寻专家 更新时间:2023-10-31 01:32:48 25 4
gpt4 key购买 nike

所以我将一个参数传递给我的 main,它是一个 IP 作为 char* name ipStr

然后我在调用 sendto() 之前初始化一个变量来保存它的长度:

sock = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP);
char buffer[8];
socklen_t ipLen = sizeof(ipStr);

res = sendto(sock, buffer, sizeof(buffer), 0,
(struct sockaddr*) &ipStr, ipLen);

但我仍然收到 Invalid argument 作为返回错误。

我在使用 g++ 时没有遇到编译错误,所以我不确定问题出在哪里。

编辑

我注意到我没有删除 ipLen 之前的 sizeof,更改了上面的内容并且仍然得到 Invalid argument

最佳答案

您的 sockaddr 可能是错误的,它是一个 struct,其中包含地址和一些其他数据的二进制表示。这是一个 sockaddr_in 转换为 sockaddr

尝试:

struct sockaddr_in ip4addr;

ip4addr.sin_family = AF_INET;
ip4addr.sin_port = htons(1234);
addrDest.sin_addr.s_addr = inet_addr("1.2.3.4");

关于c++ - 为什么我从这个 sendto() 得到 "Invalid argument"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42548978/

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