微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI WIFI设计交流 > 关于套接字socket的关闭的问题。

关于套接字socket的关闭的问题。

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

事情是这样的,我用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
2 20
3 30
4 40
5 50
6 60 X cc3000 recv函数返回 -57
客户端 send函数返回 -1
7 cc3000 10
8 20
9 30
10 40
11 50
12 60 X cc3000 send函数      一直阻塞
客户端  recv函数返回 0

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

求大神解答!谢谢!

不建议在新的设计中使用 (NRND)

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

----------------------

楼主的猜测应该是对的,经过实验确实是55秒就关闭连接通道了。

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

谢谢 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.

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

网站地图

Top