socket编程,如何可以得到当前连接的状态? socket编程,客户端连接到服务段以后,由于某些原因连接会断开,那么需要重新连接,怎么样能够得到连接的状态,看是否需要重新连接呢?谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 read(socket,...)返回0说明连接断开。 read?receive吧这不行,如果没有数据可读,岂不BLOCK掉了不行 setsockopt(ursocket,SOL_SOCKET,SO_KEEPALIVE ,...);要不自己写个ping包。:)或者调用iphlpapi.dll的输出函数GetTcpTable;函数原型如下:typedef DWORD (WINAPI *GetTcpTableFun)(PMIB_TCPTABLE,PDWORD,BOOL); 能不能说明白点我试过getsockopt,结果我根本没有连接成功,但是使用so_keepalive仍然返回true。 一但建立了连接,只要你不close断开!我觉得是应该一直连接的吧! 当你的客户端连接到服务器以后,调用SetSockOpt()函数,其中设置nOptionName为SO_KEEPALIVE,lpOptionValue为true,然后当你想确认你是否还保持和服务器的连接,那么调用getsockopt,你说的“我试过getsockopt,结果我根本没有连接成功,但是使用so_keepalive仍然返回true。”是因为如果一个option从来没有被SetSockOpt设置过的化,那么你用getsockopt得到的永远都只是它的默认值,呵呵就这些了,你再试试 :) void CChatSocket::OnClose(int nErrorCode){ ASSERT(m_pDlg!=NULL); m_pDlg->ChatDisconnect(); CSocket::OnClose(nErrorCode);}这是从我源代码下面copy过来的~!m_pDlg->ChatDisconnect();这段你可以自己改!就是连接断开的时候做什么.... 多核CPU会自动分配一个函数里的指令吗? 怎样在MainApp中增加CInternetSession session成员? VC中如何让MSChart绘制的图形紧凑一些? 急!!,请问在单文档的程序中,同时打开两个视图,他们共用一个文档,并且视图分别在两个不同的窗口。 一个异常问题 请教:CDC类。。。。。。。。 侯捷书上的菜鸟问题 他居然只支持XP不支持2000? 请问大侠们简单的问题 如何用vc++来读取dxf文件(autocad中的)? 系统菜单问题 分割窗口,我真的没辙了@p@
receive吧
这不行,如果没有数据可读,岂不BLOCK掉了
不行
要不自己写个ping包。:)
或者调用iphlpapi.dll的输出函数GetTcpTable;函数原型如下:
typedef DWORD (WINAPI *GetTcpTableFun)(PMIB_TCPTABLE,PDWORD,BOOL);
我试过getsockopt,结果我根本没有连接成功,但是使用so_keepalive仍然返回true。
{
ASSERT(m_pDlg!=NULL);
m_pDlg->ChatDisconnect();
CSocket::OnClose(nErrorCode);
}这是从我源代码下面copy过来的~!m_pDlg->ChatDisconnect();这段你可以自己改!就是连接断开的时候做什么....