这种情况,不是每次操作都会出现,
可有时会出现,就是调用closesocket()时,死锁到这种语句,不能向下执行,出现的时机也不确定,我这个程序,有时就会出现这种情况(经过跟踪发现的)怎么解决呢?谢谢
可有时会出现,就是调用closesocket()时,死锁到这种语句,不能向下执行,出现的时机也不确定,我这个程序,有时就会出现这种情况(经过跟踪发现的)怎么解决呢?谢谢
解决方案 »
- ESP模式的VPN实现问题
- *.txt数据导入Oracle数据库
- 如何通过URL获取IHTMLDocument2
- 为什么重载ONOK与PreTranslateMessage后,对话框打不开
- 关于获得父窗口并修改其成员变量
- vc.net 2003中,如果包含的路径下有两个同名文件,如何指定用到的是哪一个?还有,如何查出各包含路径下是否有同名文件?
- 如何读取word文档
- 出来贵宝地,问一个非常棘手的问题!!!(关于网络传输代理的)
- 怎样在程序发布的同时注册ocx控件(紧急)
- ADO与Excel Automation冲突如何办?
- 动态库DLL中能不能使用CString !!!!(如果能,该什么做呢??)
- 学习C++ 问题。钱能c++ 教程中的代码不能编译
可能原因
如果sock=NULL 不需要closesocket();
另外就是其他地方出错。。
可是即使是其它线程在使用此socket,我在主线程中closesocket()掉这个socket,就会死锁吗?难道closesocket()的时候,套接字必须是空闲状态?我想不是吧.....
他讲的并不对...
可我这确实有的时候会出现这种情况,closesocket()会死锁,也不知道到底是什么操作导致这个函数死锁,关键它不是每次都这样,不太好调试郁闷啊......
怎么解决呢?非常感谢
WSABUF DataBuf;
WSAOVERLAPPED RecvOverLapp;
DWORD flag = 0;
DataBuf.buf=data;
DataBuf.len=len;
memset(&RecvOverLapp,0,sizeof(WSAOVERLAPPED));
RecvOverLapp.hEvent=hRecvEvent; /////////////////////////////////////
int ret;
if((ret=WSARecv(socket,&DataBuf,1,retlen,&flag,&RecvOverLapp,NULL))==0)
{
return true;//尽管对方没有send,但这个函数竟然执行到这里,大概要等一分半左右的时间
}
这是怎么回事呢?谢谢