各位大虾,
在下遇到了一个有关select的问题。
当我写了一个
DWORD dwRet;
while(1)
{
SOCKET sk1,sk2;
// sk2,and sk1 已经创建成功,并绑定相应地址。
fd_set ReadSet;
FD_ZERO(&ReadSet);
FD_SET(sk1, &ReadSet);
FD_SET(sk2, &ReadSet);
dwRet = select(0, &ReadSet,NULL,NULL,NULL);
if(dwRet == SOCK_ERROR)
break;
else //起一个线程
...}
while第一次循环是对的,第二次就报错了:error:10038。
我不知道哪个socket会突然变样了,我不曾有过关闭动作。
两个socket我只在析构中释放了。
专家请帮我把把脉,谢谢。
在下遇到了一个有关select的问题。
当我写了一个
DWORD dwRet;
while(1)
{
SOCKET sk1,sk2;
// sk2,and sk1 已经创建成功,并绑定相应地址。
fd_set ReadSet;
FD_ZERO(&ReadSet);
FD_SET(sk1, &ReadSet);
FD_SET(sk2, &ReadSet);
dwRet = select(0, &ReadSet,NULL,NULL,NULL);
if(dwRet == SOCK_ERROR)
break;
else //起一个线程
...}
while第一次循环是对的,第二次就报错了:error:10038。
我不知道哪个socket会突然变样了,我不曾有过关闭动作。
两个socket我只在析构中释放了。
专家请帮我把把脉,谢谢。
应该是线程中间有对sk1,sk2的操作。
应该是线程中间有对sk1,sk2的操作。而线程结束的时间在析构函数调用之后。
线程在什么时候结束?