因此,我将一个参数传递给我的main,它是一个IP,作为char *名称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++的编译错误,所以我不确定问题出在哪里。
编辑
我注意到我没有在
sizeof
之前删除ipLen
,更改了上面的内容,但仍然得到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/