int mysend( SOCKET s, const char *buf, int len, int flags )
{
已经知道 这个socket是 s 如何安全的 断开 他的连接?
我用了closesocekt 好象断开不了连接 要么就是程序 卡死了
}或者有什么方法 能直接让 我的进程里的连接断开?
{
已经知道 这个socket是 s 如何安全的 断开 他的连接?
我用了closesocekt 好象断开不了连接 要么就是程序 卡死了
}或者有什么方法 能直接让 我的进程里的连接断开?
shutdown 会把系统中的socket对象关掉,
不过此时最好close一下, 因为shutdown只是关掉内核层的socket,进程中应该还保存了
句柄
1.硬关闭
不管缓冲中是不是还有数据发送中或数据已被接收在缓冲区中,直接关闭
struct linger Lin;
Lin.l_onoff = 0;
Lin.l_linger = 0;
setsockopt(TheSocket, SOL_SOCKET, SO_LINGER, (char *)&Lin,sizeof(Lin));
shutdown(TheSocket,SD_BOTH);
closesocket(TheSocket);2.完美关闭
1.先检查缓冲区是否有数据在发送或已被接收,如果有,先完成发送或发收
2.缓冲区都没数据时,使用shutdown()
3.closesocket()
你调用closesocket都可以立即释放SOCKET资源而不会等待
这其中的SOCKET缓冲是有操作系统负责继续发送或者立即丢弃的
也就是closesocket不会导致阻塞如果你发现调用closesocket导致了你的程序出现阻塞,也就是卡死
那基本是你的代码的问题,而不是closesocket函数的问题
检查closesocket调用后运行前后的TRACE,一般可以发现问题所在了强调一遍,closesocket不会导致阻塞