请教关于多线阻塞套接字的问题
本人现已经实现了单线程的套接字代码如下
SOCKET _socketT;
SOCKADDR_IN _addrT;
char clientNameT[256];
while(1)
{
WSADATA wsadata;
DWORD version = MAKEWORD(2, 0);
int ret = WSAStartup(version, &wsadata);
if(ret != 0)
{
MessageBox(0, "创建网络未成功", 0, MB_OK);
return;
}
if(_socketT != NULL)
{
closesocket(_socketT);
_socketT = NULL;
}
if(_socketT == NULL)
{
_socketT = socket(AF_INET, SOCK_STREAM, 0);
if(_socketT == NULL)
{
MessageBox(0, "套接字创建失败", 0, MB_OK);
return;
}
}
//初始化地址
_addrT.sin_family = AF_INET;
_addrT.sin_addr.S_un.S_addr = INADDR_ANY;
_addrT.sin_port = htons(2350);
ret = bind(_socketT, (LPSOCKADDR)&_addrT, sizeof(_addrT));
if(ret == SOCKET_ERROR)
{
MessageBox(0, "绑定失败", 0 , MB_OK);
return;
}
ret = listen(_socketT, 20);
if(ret == SOCKET_ERROR)
{
MessageBox(0, "监听失败", 0 , MB_OK);
return;
}
SOCKET s = accept(_socketT, 0, 0);
if(s == SOCKET_ERROR)
{
MessageBox(0, "阻塞失败", 0 , MB_OK);
return;
}
char buf[256];
ret = recv(s, buf, 256, 0);
if(s == SOCKET_ERROR)
{
MessageBox(0, "获取数据失败", 0 , MB_OK);
return;
}
//反馈数据
char _tickTime[256];
sprintf(_tickTime, "%d", GetTickCount());
strcat(buf, _tickTime);
send(s, buf, 256, 0);
closesocket(_socketT);
WSACleanup();
}
但是当我使用_beginthread(ThreadSocket,0,0);多个的时候就会出现MessageBox(0, "绑定失败", 0 , MB_OK);请问有些什么方面的功能我没有设置。