我们使用DaemonNew的例子进行tcp通信,用默认的阻塞模式recv工作正常。
但想把recv改为非阻塞模式,用了下面方法:
int sockblk = 0;
setsockopt(s, SOL_SOCKET, SO_BLOCKING, &sockblk, sizeof(sockblk));
但虽然recv变为非阻塞了,会马上返回,但返回值一直是-1,查询fdError后得到代码为EWOULDBLOCK;
无论client发送什么数据,recv的缓冲区里一直是0,recv返回值也一直是-1,无法接收数据。请问该如何将recv改为非阻塞模式工作?
Shine:
请问recv flag有没有设成MSG_DONTWAIT?
xin liu:
回复 Shine:
试过了,加不加都一样。一直返回-1,而且buff都是0.
是否还需要设置其他的地方?
又或者是MCSDK比较老了,我搜了一下英文论坛,似乎目前都用PROCESSOR_SDK了?