客户端把套接字设置完心跳包 接下来怎么用啊?

clown 2009-12-12 01:10:56
BOOL bKeepAlive = TRUE;
int nRet=::setsockopt(sockClient,SOL_SOCKET,SO_KEEPALIVE,(char*)&bKeepAlive,sizeof(bKeepAlive));
if(nRet!=0)
{
cout<<WSAGetLastError<<endl;
return ;
}

//设置KeepAlive检测时间和次数
tcp_keepalive inKeepAlive = {0}; //输入参数
unsigned long ulInLen = sizeof(tcp_keepalive );

tcp_keepalive outKeepAlive = {0}; //输出参数
unsigned long ulOutLen = sizeof(tcp_keepalive );

unsigned long ulBytesReturn = 0;

//设置socket的keep alive为10秒,并且发送次数为3次
inKeepAlive.onoff = 1;
inKeepAlive.keepaliveinterval = 10000; //两次KeepAlive探测间的时间间隔
inKeepAlive.keepalivetime = 3; //开始首次KeepAlive探测前的TCP空闭时间

nRet=WSAIoctl(sockClient,
SIO_KEEPALIVE_VALS,
(LPVOID)&inKeepAlive,
ulInLen,
(LPVOID)&outKeepAlive,
ulOutLen,
&ulBytesReturn,
NULL,
NULL);
if(SOCKET_ERROR == nRet)
{
cout<<WSAGetLastError<<endl;
return;
}
以上把套接字设置成心跳
接下来 怎么实现10秒发送一次数据
直接调用send()就完了?
小弟头次接触这个,忘大哥们指教
...全文
123 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
arong1234 2009-12-12
  • 打赏
  • 举报
回复
这是网络层自动做的,windows可以控制由OS发送或者网卡发送,不需要应用程序关心

[Quote=引用 3 楼 zyc285230318 的回复:]
引用 2 楼 wenxy1 的回复:
它是自动发送的,不用你管。

我也没设置发送的内容,他会发送什么呢
不调用SEND会发送吗
CSDN上有没有好心人 给段完整的心跳代码啊
[/Quote]
sanguomi 2009-12-12
  • 打赏
  • 举报
回复
用个线程,过多久发一次包
clown 2009-12-12
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wenxy1 的回复:]
它是自动发送的,不用你管。
[/Quote]
我也没设置发送的内容,他会发送什么呢
不调用SEND会发送吗
CSDN上有没有好心人 给段完整的心跳代码啊
Wenxy1 2009-12-12
  • 打赏
  • 举报
回复
它是自动发送的,不用你管。
tan625747 2009-12-12
  • 打赏
  • 举报
回复
上google

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧