一起学习CC3200系列教程之2个TCP_非阻塞及阻塞设置
阿汤哥
序:
能力有限,难免有错,有问题请联系我,
QQ1519256298 hytga@163.com
Pdf下载http://pan.baidu.com/s/1hqiWB56
关键字:socket ,阻塞,非阻塞,SetSockOpt
现在我们介绍如果创建一个TCP连接。
开发环境:
CCS,sdk1.1,freertos,
软件流程:
我们创建两个任务,第一个任务比第二个任务多了一个网络设置的功能,其他的一致,我们就用第一个任务来表达,任务初始化CC3200为STA模式,并连上AP,创建一个socket,读取远端的数据,并把读到的数据原封不动地发送回去。自动检测socket连接有没有断开,并自动重新连接,没有做网络断开连接的检测。
这里我们用了两种方式:阻塞及非阻塞
阻塞:
任务会阻塞在写和读的函数上,直到发送出去,读函数会直接返回,所以在返回值做了一个判断:有没有断开连接,有就重连。当阻塞某一函数时,任务会自动切换。因此不用我们去延迟任务
非阻塞:
任务不会阻塞在读的函数上,写函数有没有阻塞我没测过,估计得用测量这个函数的执行时间才能知道有没有阻塞,挺麻烦的,所以略过。当socket断开连接会导致发送错误,利用这个特性,在发送错误时我们进行重连,因此这个会导致无用的信息传输浪费了电量,而且响应不及时,改进方法:用select,这个改天说。任务不会自动切换,需要我们去延迟任务,切换任务,这里我是使用的是用SetSockOpt来设置非阻塞的
main函数