- 论坛徽章:
- 0
|
返回0没有错误,0来做文件描述符的,莫非你的0描述符最开始的时候被关了?
cjaizss 发表于 2011-11-30 13:24 ![]()
报错误: Socket error 10038 - Socket operation on non-socket 的时候accept的值为负值,不过从你的话我确实得到点启发。如果出现accept为负数的情况,我是否需要将
sock = socket(AF_INET, SOCK_STREAM, 0);这个sock关闭掉,目前的情况是如果accept失败会同时关闭accept的套接字和socket的套接字。
if(setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (const char *)&use, sizeof(int)));
if(bind(sock, (struct sockaddr *)&sin, sizeof(sin)) < 0);
if(listen(sock, 100) < 0);
len = sizeof(sockaddr);
int asock=-1;
asock = accept(iSock, &sin, &len);
if(asock < 0)
{
if(errno != EINTR)
{
printf("accept failed: %s]\n",strerror(errno));
close(asock);
asock=-1;
shutdown(iSock,2);
close(iSock);
iSock=-1;
}
continue;
} |
|