初级会员

- 积分
- 145
- 金钱
- 145
- 注册时间
- 2020-5-21
- 在线时间
- 60 小时
|
1金钱
freertos 线程中:
while(1) {
sockfd = socket(AF_INET, SOCK_STREAM, 0);
bind(sockfd, (struct sockaddr *)&clt_addr, sizeof(clt_addr));
connect(sockfd, (struct sockaddr *)&svr_addr, sizeof(svr_addr));
while(-1 != sockfd) {
recvnum = recv(sockfd, buf, MAX_BUF_SIZE, 0);
}
lwip_close(sockfd);
sockfd = -1;
}
接收正常,发现recv函数是阻塞模式。现在需要在另一个线程中 不断 发送数据,
while(1) {
send(...);
vTaskDelay(250);
}
结果发现收发都不运行。是否改成非阻塞接收,如何改,查到有用lwip_setsockopt(sockfd, SOL_SOCKET, SO_NONBLOCK, &nonblock, sizeof(nonblock));
但是没有定义SO_NONBLOCK。请指教,谢谢!
|
|