TI中文支持网
TI专业的中文技术问题搜集分享网站

【cc3000】关于套接字socket的关闭的问题。

事情是这样的,我用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。

求大神解答!谢谢!

mei ha:

回复 gaoyang9992006:

谢谢 gaoyang9992006 

很偶然的,刚才看到官方命令说明,一个套接字在静止60秒之后将会被关闭。

http://processors.wiki.ti.com/index.php/CC3000_HCI_DATA_messages#HCI_DATA_SEND_.280×81.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.

赞(0)
未经允许不得转载:TI中文支持网 » 【cc3000】关于套接字socket的关闭的问题。
分享到: 更多 (0)