TI论坛
直播中

李杨

7年用户 197经验值
私信 关注

请问CC3000是否有一套机制,在一定时间内套接字未进行通信,会自动关闭?

本帖最后由 一只耳朵怪 于 2018-6-8 10:00 编辑

事情是这样的,我用cc3000做服务端,笔记本做客户端,采用tcp相互通信
问题:在一定时间内,双方未进行socket通讯,cc3000是否会自动关闭套接字socket。
以下是实验过程
实验一、连接成功后,客户端(笔记本)每隔一定时间发送数据给服务端(cc3000),当间隔超过55秒左右时,客户端(笔记本)发送失败,send函数返回-1;cc3000 recv函数返回-57;
实验二、连接成功后,服务端(cc3000)每隔一定时间发送数据给客户端(笔记本),同样的,当间隔超过55秒左右时,发送失败,cc3000 send函数 一直阻塞;客户端(笔记本) recv 函数返回 0;
实验三、连接成功后,服务端(cc3000)主动关闭套接字socket,调用closesocket(),然后调用recv,返回 -57;
实验四、连接成功后,服务端(cc3000)主动关闭套接字socket,调用closesocket(),然后调用send,返回 -1;
序号发送端时间间隔(s)cc3000是否收到数据包具体情况
1客户端(笔记本)10[/tr]
220[/tr]
330[/tr]
440[/tr]
550[/tr]
660Xcc3000 recv函数返回 -57
客户端 send函数返回 -1
7cc300010[/tr]
820[/tr]
930[/tr]
1040[/tr]
1150[/tr]
1260Xcc3000 send函数      一直阻塞
客户端  recv函数返回 0

猜测:CC3000是否有一套机制,在一定时间内套接字未进行通信,会自动关闭?如果是,但是我并未受到socket断开的事件信号HCI_EVNT_BSD_TCP_CLOSE_WAIT。
求大神解答!谢谢!

回帖(2)

刘馨

2018-6-7 01:05:17
不建议在新的设计中使用 (NRND)

替换日期 CC3100MOD – 器件与被比较器件具有相似功能,但并不功能等效。 
----------------------
楼主的猜测应该是对的,经过实验确实是55秒就关闭连接通道了。

   http://e2e.ti.com/support/wireless_connectivity/simplelink_wifi_cc3000/f/851/p/269717/987964此贴讲的问题貌似跟你的类似。我没这个板子,不好测试。
举报

李杨

2018-6-7 01:11:24
引用: 潘涛12345 发表于 2018-6-7 01:05
不建议在新的设计中使用 (NRND)

替换日期 CC3100MOD – 器件与被比较器件具有相似功能,但并不功能等效。 

谢谢 gaoyang9992006 
很偶然的,刚才看到官方命令说明,一个套接字在静止60秒之后将会被关闭。
http://processors.wiki.ti.com/index.php/CC3000_HCI_DATA_messages#HCI_DATA_SEND_.280x81.29

HCI_DATA_SEND (0x81)

HCI_DATA_SEND message is used to transmit a TCP packet to a socket. Before issuing a HCI_DATA_SEND message to CC3000, a socket should first be created using HCI_CMND_SOCKET (0x1001). Please note that a socket will be closed by CC3000 after 60 seconds of inactivity, thus a time between creating a socket and issuing HCI_DATA_SEND should not exceed this period! Use the Socket Handle returned by HCI_EVNT_SOCKET (0x1001) in the appropriate HCI_DATA_SEND argument field.
举报

更多回帖

发帖
×
20
完善资料,
赚取积分