请问closesocket(socket)为什么不会释放句柄数和内存资源啊?
//代码简化如下
int TcpClinet(SOCKET &s,const char * ip,WORD port)
{
s=socket(AF_INET, SOCK_STREAM, IPPROTO_IP);
if(s!=-1)
{
sin.sin_family = AF_INET;
sin.sin_port=htons(port);
sin.sin_addr.s_addr=inet_addr(ip);
long ret=connect(s,(LPSOCKADDR)&(sin),sizeof(sin));
if(ret!=0)
{
closesocket(s);
s=-1;
}
return ret;
}
return -1;
}
int main(int argc, char* argv[])
{
long ret=-1;
socket s;
while(ret!=0)
{
ret=TcpClinet(s,"192.168.1.2",888);//该主机一直没开机
if(ret!=0)
{
Sleep(1000);
}
}
}
//一次意外该主机一直没开机,我发现本进程的句柄数在不断的飙升,后排查发现是TcpClinet这个函数中的
//closesocket(s)没有释放句柄资源导致的,请问为什么调用closesocket(s)没有释放句柄资源呢?如何解决?