我的服务端程序使用acceptex,客户端套接字是事先创建好的,每次断开连接时使用transmitfile来实现套接字重用。现在有这么一个问题,当我发现对方非我预期客户或者超时时,我主动想断开连接,这时套接字长时间处在FIN_WAIT_2状态,这个原因是由于对方不响应我这边关闭造成的,也就是说,客户如果及时调用closesocket就不会有这个问题。如果客户由于某种原因不做closesocket,那我这边应该如何处理?
解决方案 »
- WaitForSingleObject等待线程结束后closehandle 出现异常
- 大家知道最NB的输入是什么吗?告诉你吧
- 在vc中写界面,比如一个窗体上有很多控件,是不是全部要用代码写呀,不能象delphi那样手工把控件拖上去就行了.是不是效率很低呀?
- 急问高手关于API HOOK的问题
- 我写了个只在托盘运行的CD播放程序,如何简单的实现键盘控制。是不是非要用键盘钩子。
- 初学者的问题,怎么把一个位图保存。
- 怎么去掉向导中的帮助按钮?
- 能否在VC++编写的程序中增加一个用VB写的模块?
- 如何添加一个字符串到Dll文件字符串资源中
- 关于Cstring和char*的问题。
- 第一次用VC遇到了托盘问题,完全不会,请大家帮帮我,我真的很急啊
- 帮忙!!
int CloseSocket(int iSocketId)
{
int iResult = 0;
static struct linger lig;
lig.l_onoff=1;
lig.l_linger=0;
static int iLen=sizeof(struct linger);
setsockopt(iSocketId,SOL_SOCKET,SO_LINGER,(char *)&lig,iLen);
shutdown(iSocketId,-1);
Sleep(17);
#ifdef WIN32
iResult = closesocket(iSocketId);
#else
iResult = close(iSocketId);
#endif
return iResult;
}
谢谢关心,但你那方法并不能实现套接字重用,使用shutdown后,再在套接字上做操作只能是closesocket了
会超时的.