【发布时间】:2018-10-23 12:10:17
【问题描述】:
这个问题把我逼疯了。
我创建一个套接字并设置 SO_REUSEADDR。
thisSocket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
int i = 1;
setsockopt(thisSocket , SOL_SOCKET, SO_REUSEADDR, (char *)&i, (int)sizeof(i));
当我绑定时:
sockaddr_in_t sock_addr;
memset(&sock_addr, 0, sizeof(sockaddr_in_t));
sock_addr.sin_family = AF_INET;
sock_addr.sin_port = htons(_listeningPort);
sock_addr.sin_addr.s_addr = inet_addr("0.0.0.0");
bind(thisSocket, reinterpret_cast<sockaddr_t*>(&sock_addr), sizeof(sock_addr));
我有时会出错:
"An invalid argument was supplied"
我在这里做错了什么?为什么会出现这个错误?
更新
原来在调用 bind() 之前,数据包已在套接字上发送。这导致 bind() 返回错误。
【问题讨论】:
-
你显示的代码很好,所以你没有显示的代码肯定有问题。请提供一个minimal reproducible example 来展示错误的操作。
标签: sockets udp window winsock winsock2