【发布时间】:2014-01-30 19:06:09
【问题描述】:
我收到错误“无法绑定套接字”,错误:10038,尝试对不是套接字的东西进行操作。套接字已创建,但我无法绑定它。
struct sockaddr_in serverAddress ; // declared as global
struct sockaddr_in clientAddress ; // declared as global
int len=sizeof(struct sockaddr); // declared as global
SOCKET s = NULL ; // declared as global
memset (& serverAddress , 0 , sizeof ( serverAddress ));
serverAddress.sin_family = AF_UNSPEC ;
serverAddress.sin_addr.s_addr =INADDR_ANY;
serverAddress.sin_port = htons(12345);
if( s = socket(PF_INET,SOCK_DGRAM, IPPROTO_UDP) == INVALID_SOCKET)
{
printf (" Unable to create a socket \n");
printf (" Failed with error : %d\n%s\n", WSAGetLastError () ,
gai_strerror ( WSAGetLastError ()));
exit (1);
}
else
{
std::cout<<"CREATED"<<std::endl;
}
if( bind(s,(struct sockaddr *)&serverAddress,sizeof(serverAddress)) < 0)
{
printf (" Unable to bind socket \n");
printf (" Failed with error : %d\n%s\n", WSAGetLastError () ,
gai_strerror ( WSAGetLastError ()));
}
else
{
printf (" Bound to socket .\n");
}
【问题讨论】:
-
那么...标题和标签中提到的 threading 与此有什么关系?我没有看到任何线程工作,如果我看到了,如果它是一个侦听器,我不会期望多个套接字成功绑定到同一个端口。
-
我只创建一个线程。并在其中进行绑定。我改变标题
-
你不是'绑定[ing]到一个套接字'。您正在尝试将套接字绑定到地址。