微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI WIFI设计交流 > 非阻塞的recv

非阻塞的recv

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

在TCP通信中recv可以设置为非阻塞的吗?我尝试了两种方法,

1.使用setsockopt把SOCKOPT_RECV_NONBLOCK 设置为非阻塞的,程序如下

sock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);

short  receiv_nonBlocking = 0;

setsockopt(sock, SOL_SOCKET, SOCKOPT_RECV_NONBLOCK  , &receiv_nonBlocking, sizeof(receiv_nonBlocking));

2.把SOCKOPT_RECV_TIMEOUT 设置为0(或者是1等很小的数),程序如下:

unsigned long  timeoutvalue = 0;

setsockopt(sock, SOL_SOCKET, SOCKOPT_RECV_TIMEOUT   , &timeoutvalue      , sizeof(timeoutvalue      ));

但是都不行,执行recv时还是阻塞在那,直到收到客户端发来的数据时才能执行到recv后面的程序,请问我以上的程序设置有什么问题吗?同样的方法用在UDP通信时是可行的,阻塞,非阻塞模式都可以,为什么TCP通信时就不行呢,我的板子是原厂的5739那块,patch,SDK什么的肯定是最新的

struct timeval timeval;

 

       timeval.tv_sec =  0;             // Seconds

       timeval.tv_usec = 5000;             // Microseconds. 10000 microseconds resoultion

请按上面的这种方式去设置你的timeoutvalue.

上一篇:CC3000开发问题请教
下一篇:配置cc3000

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

网站地图

Top