急!怎样判断Socket通讯过程中网络中断的情况 我用Socket通讯,将网线拔掉后,用Send发送字符,Send 函数的返回值不是SOCKET_ERROR,在这种情况下我怎样才能判断到网路不通? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 发送test消息,如果n秒内收不到回复,就认为已经断开 首先,重载ONCLOSE,然后SetSockOpt(SO_KEEPALIVE,...) 请问everandforever(Forever),SetSockOpt()应该怎样用,我用了,没有起作用. BOOL bKeepAlive = TRUE;SetSockOpt(SO_KEEPALIVE, &bKeepAlive, sizeof(BOOL) );________这只能保证在一段时间内,对方没有响应时你会被通知到.你也可以自己定时去PING对方. 网线断掉这种情况是不会马上有ONCLOSE的. to everandforever(Forever) 如果客户机掉电,即使用了SetSockOpt,服务端好像收不到OnClose()消息 "网线断掉这种情况是不会马上有ONCLOSE的"说得对。我的解决办法是,客户端定时发个包过来。如果若干秒内没收到客户端发的包就认为连接已中断。 你的OnClose()按照如下写,就会收到正常关闭的消息void CRecvDataSocket::OnClose(int nErrorCode) { switch(nErrorCode) { case 0: strcpy(strMessage,"函数正确执行!"); break; case WSAENETDOWN: strcpy(strMessage,"网络子系统崩溃!"); break; case WSAECONNRESET: strcpy(strMessage,"远端重置了连接!"); break; case WSAECONNABORTED: strcpy(strMessage,"延时或其他与原因,放弃连接!"); break; } this->Close(); CAsyncSocket::OnClose(nErrorCode);}如果接收Socket设置BOOL D=1;m_RecvDataSock.SetSockOpt(SO_KEEPALIVE,&D,sizeof(BOOL)); 那么操作系统默认的发送数据判断对方是否连接的时间是2个小时 关于ADO取得数据库自动编号字段的问题。 在函数前面加STDMETHODIMP是什么意思? vc界面奇怪的问题 OpenProcess函数出现的一个奇怪的问题,请各位专家帮帮忙? @@一小时内结贴@@ 大家帮帮我!是一个关于我该如何的问题。问题如下: 请问:XML是什么? 做了个ATL程序,现在要加一个对话框,实现一些功能,但是我加了之后有下面的错误?? 类似wingate的源码? vc++怎样使窗体边缘透明 请问如何用VC取得汉字的字模信息? 谁能帮我解释一下这段代码 帮忙
SetSockOpt(SO_KEEPALIVE, &bKeepAlive, sizeof(BOOL) );
________
这只能保证在一段时间内,对方没有响应时你会被通知到.你也可以自己定时去PING对方. 网线断掉这种情况是不会马上有ONCLOSE的.
如果客户机掉电,即使用了SetSockOpt,
服务端好像收不到OnClose()消息
void CRecvDataSocket::OnClose(int nErrorCode)
{
switch(nErrorCode)
{
case 0:
strcpy(strMessage,"函数正确执行!");
break;
case WSAENETDOWN:
strcpy(strMessage,"网络子系统崩溃!");
break;
case WSAECONNRESET:
strcpy(strMessage,"远端重置了连接!");
break;
case WSAECONNABORTED:
strcpy(strMessage,"延时或其他与原因,放弃连接!");
break;
}
this->Close();
CAsyncSocket::OnClose(nErrorCode);
}
如果接收Socket设置
BOOL D=1;
m_RecvDataSock.SetSockOpt(SO_KEEPALIVE,&D,sizeof(BOOL));
那么操作系统默认的发送数据判断对方是否连接的时间是2个小时