window mobile下,keepalive的默认时间间隔是多少?如何修改时间呢?

gaodj9999 2010-03-26 10:51:54
window mobile下,keepalive的默认时间间隔是多少?如何修改时间呢?

我现在还是用xp下,以下这段代码修改的
// 设置KeepAlive参数
tcp_keepalive alive_in = {0};
tcp_keepalive alive_out = {0};
alive_in.keepalivetime = 5000; // 开始首次KeepAlive探测前的TCP空闭时间
alive_in.keepaliveinterval = 5000; // 两次KeepAlive探测间的时间间隔
alive_in.onoff = TRUE;
unsigned long ulBytesReturn = 0;
nRet = WSAIoctl(m_sHost, SIO_KEEPALIVE_VALS, &alive_in, sizeof(alive_in),
&alive_out, sizeof(alive_out), &ulBytesReturn, NULL, NULL);

if (nRet == SOCKET_ERROR)
{
int errCode = WSAGetLastError();
CString temp;
temp.Format(L"设置KeepAlive参数失败!%d",errCode);
AfxMessageBox(temp);
return;
}

编译没有问题,可是执行的时候出错了
错误代码是:10022 WSAEINVAL
...全文
682 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
gaodj9999 2010-03-26
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 yihan7h 的回复:]
在你前一个帖子回复过了,keepalive只支持同步socket,你看看是不是这个原因。
[/Quote]

在xp下,这样解释的
Sends keep-alives. Not supported on ATM sockets (results in an error).

一样不支持异步,但是我程序运行成功了。而且,在之前执行
// 开启KeepAlive
BOOL bKeepAlive = TRUE;
int nRet = setsockopt(m_sHost, SOL_SOCKET, SO_KEEPALIVE, (char*)&bKeepAlive, sizeof(bKeepAlive));

来开启keepalive属性,也是成功的,所以应该能猜想,应该是支持keepalive

我现在是想改变keepalive的时间,不知道怎么改变。

yihan7h 2010-03-26
  • 打赏
  • 举报
回复
在你前一个帖子回复过了,keepalive只支持同步socket,你看看是不是这个原因。

7,657

社区成员

发帖
与我相关
我的任务
社区描述
Windows Phone是微软发布的一款手机操作系统,它将微软旗下的Xbox LIVE游戏、Zune音乐与独特的视频体验整合至手机中。
社区管理员
  • Windows客户端开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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