微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI WIFI设计交流 > cc3200如何设置socket通信的keepAlive心跳参数

cc3200如何设置socket通信的keepAlive心跳参数

时间:10-02 整理:3721RD 点击:

在CC3200SDK_1.2.0里面的库文件中提供了使能或者禁能socket 设置keepalive的功能,但是没有提供根据需要设置TCP_KEEPIDLE、TCP_KEEPINTVL、TCP_KEEPCNT这三个参数的功能。我就借鉴Linux下面对于相似功能的设置,程序如下:

int32_t setKeepAlive(int32_t fd)
{
SlSockKeepalive_t enableOption;
enableOption.KeepaliveEnabled = 1;

int32_t keepIdle = 20;
int32_t keepInterval = 5;
int32_t keepCount = 3;

if(fd < 1)
return _ERROR;
else
{
if(sl_SetSockOpt(fd,SOL_SOCKET,SO_KEEPALIVE, &enableOption, sizeof(enableOption)) < 0)
{
return SOCKET_OPT_ERROR;
}

if( sl_SetSockOpt(fd, SL_IPPROTO_TCP, TCP_KEEPIDLE, &keepIdle, sizeof(keepIdle)) < 0)
return SOCKET_OPT_ERROR;
if( sl_SetSockOpt(fd, SL_IPPROTO_TCP, TCP_KEEPINTVL, &keepInterval, sizeof(keepInterval)) < 0)
return SOCKET_OPT_ERROR;
if( sl_SetSockOpt(fd, SL_IPPROTO_TCP, TCP_KEEPCNT, &keepCount, sizeof(keepCount)) < 0)
return SOCKET_OPT_ERROR;

return _OK;
}
}

程序执行完第2个sl_SetSockOpt函数的时候就返回错误,退出了,这意味着自己的野路子行不通了(这段代码应该是没有问题的,因为我在linux上面测试过的)。但是我之前看到过有人用CC3200芯片实现了keepalive机制的,所以想问有没有人知道怎么弄的?

CC3200有keepalive机制,时间是5分钟一次。目前只能支持enable/disable, 不能修改这个interval.

因为我在市场上成熟产品(基于CC3200芯片)上看到有人实现了Keepalive这个机制,且该产品的interval为10秒。那是不是与SDK版本有关,我用的是1.2.0,以前的版本可以设置吗?

不可以的,除非用应用层的数据包来做心跳。

好的,谢谢回答。希望TI后续可以考虑将这个功能完善下。

我找到TI 关于Keep alive 参数的设置方法,请参考

https://e2e.ti.com/support/embedded/tirtos/f/355/p/513818/1867744

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top