关于TCP接收数据,程序结构请教
现在是这样的,我想用CC3000做TCP的服务端,然后手机需要通讯时就连上该服务端,然后传输数据。现在基础的TCP连接,手机的连接都已经测试完毕,可以实现数据的接收和发送,现在的问题是,CC3000向手机端发送数据没问题 只要连上,随时可以发送数据,但CC3000接收数据方面,直接调用recv()的话,手机端没连,不发数据的话,会一直等待,所以想请教下,CC3000接收数据这边程序应该怎么编写比较合适啊。不会出现那种死等的情况。
用setsockopt去设置SOCKOPT_RECV_TIMEOUT可以修改recv的timeout.
我想问的是这个问题,在设备做TCP服务端时,主程序的结构,客户端未连接时,设备执行一些外设的轮询工作,有客户端连接并发送数据时,设备接收数据并进行数据处理。那现在在主函数中怎么确定有数据包来临,然后去读取数据包然后执行,未有数据包时就不用去读取数据包,执行外设轮询。
我现在的做法是用select。不过还是得一直轮询。为了不让select阻塞我在select的事件上加了一个信号量等待。
你说的问题我也想过,我也觉得这样不合理,应该是中断主动通知好。
可是我的理解是,TI的CC3000目前就是你发送给它请求它才会用中断响应。好像也有主动通知的中断事件,你可以看hci_unsol_event_handler函数。但目前是没有recv和select。也就是说你还是得轮询才会收到。
嗯 没有中断的通知方法,只能轮询查找了,想问下你那个select轮询是怎么使用的啊,能加qq教我下吗 我的qq 245609615,谢谢
select轮询的方法可以了,还有一个TCP连接的问题,就是设备作为TCP服务端时,然后PC建立TCP客户端去连接,我服务端的程序是连接上之后,发送数据至客户端,现在的现象是,客户端能连上,但不是每次连上都能收到数据,一般是连接断开2次又能收到一次,但有时是一连上就能收到数据,很奇诡的现象。