使用UDP多播是setsockopt时失败返回-1,错误代码10042的解决办法

来源:互联网 发布:怎么样注销淘宝账号 编辑:程序博客网 时间:2024/06/10 21:55

昨天在写一个接收多播消息的程序时发现了一个错误


// 欲加入组播组地址信息//组播地址mreq.imr_multiaddr.s_addr = inet_addr (strIPAddress.c_str());//透明所有协议mreq.imr_interface.s_addr = INADDR_ANY;bool bReuse = true;setsockopt(m_socket, SOL_SOCKET, SO_REUSEADDR, (char *)&bReuse, sizeof(bool));//设置套接字选项,加入一个多播组if (setsockopt (m_socket, IPPROTO_IP, IP_ADD_MEMBERSHIP, (char FAR *)&mreq, sizeof (mreq)) == SOCKET_ERROR){//报错cout<<"setsockopt failed! Error: "<<WSAGetLastError()<<endl;closesocket (m_socket);return FALSE;}

当执行到第二个setsockopt的时候总是会出现10042的错误,而另外一个程序同样的代码并不会出现这样的错误。

经检查,当使用ws2_32.lib库时执行该setsockopt会出现该错误,而使用wsock32.lib时不会出现该错误。

将文件头加入下面语句,或者在项目属性-》链接器-》输入-》附加依赖项中加入wsock32.lib再编译执行即可。

#pragma comment(lib,"wsock32.lib")


0 0
原创粉丝点击