多线程socket冲突的问题
-
- Posts: 27
- Joined: Tue Sep 29, 2015 4:27 pm
多线程socket冲突的问题
Postby bobby_jiang » Tue Sep 05, 2017 12:38 am
我用的是V1.5.0版本的rtos的sdk。
我起了两个任务,每个任务都创建一个tcp socket 客户端,每个socket都是设置成非阻塞的。
其中一个任务的socket,我用select去监测读和写这个socket;另外一个任务的socket,我收发完数据后,就把它close了。
但是,我发现经常出现以下现象(但不是必现的现象):一旦把另外一个socket close掉,则剩下的那个socket的select返回值变成-1,errno却是0。
说明一下:剩下socket的select操作只针对本socket fd,用来监听本socket fd的读和写,不涉及到另外一个任务中的socket fd。也就是说每个socket都是在各自的任务中创建、读写和close的,按照道理应该是互相独立的,但是为啥会互相影响?
难道乐鑫的esp8266的freertos+lwip不支持在多个任务中创建多个不同的socket吗?麻烦帮忙找一下原因!
Regards
Bobby
-
- Posts: 27
- Joined: Tue Sep 29, 2015 4:27 pm
-
- Posts: 27
- Joined: Tue Sep 29, 2015 4:27 pm
Re: 多线程socket冲突的问题
Postby bobby_jiang » Wed Sep 06, 2017 9:37 am
Re: 多线程socket冲突的问题
Postby Her Mary » Wed Sep 06, 2017 10:16 am
https://github.com/espressif/ESP8266_IOT_PLATFORM
https://github.com/espressif/esp8266-rtos-sample-code/tree/master/04Protocal
-
- Posts: 27
- Joined: Tue Sep 29, 2015 4:27 pm
Re: 多线程socket冲突的问题
Postby bobby_jiang » Wed Sep 06, 2017 11:25 pm
你给的两个链接地址,没有多个socket tcp client的示例,并且用的是espconn_connect()这类的接口。
我采用的是lwip的通用socket接口,例如socket(), connect(), select()等通用socket 接口函数。
可否提供一个多个tcp socket的client的例子参考一下?
谢谢!
Regards
Bobby
-
- Posts: 27
- Joined: Tue Sep 29, 2015 4:27 pm
Re: 多线程socket冲突的问题
Postby bobby_jiang » Sun Sep 10, 2017 10:50 pm
我试着把SDK的版本从1.5.0退回到1.4.2,跟你们反馈的多线程socket冲突的问题就没有了,我强烈怀疑你们RTOS 1.5.0的版本有bug。
请你们试着提供一个两个任务、两个socket tcp client的例子,测试一下RTOS 1.5.0的sdk!!!
谢谢!
Regards
Bobby
-
- Posts: 27
- Joined: Tue Sep 29, 2015 4:27 pm
Re: 多线程socket冲突的问题
Postby bobby_jiang » Tue Sep 12, 2017 9:58 am
没有理由同样的代码,再rtos 1.4.2上面没有问题,在1.5.0上就有问题。
谢谢!
Regards
Bobby
-
- Posts: 27
- Joined: Tue Sep 29, 2015 4:27 pm
Re: 多线程socket冲突的问题
Postby bobby_jiang » Fri Sep 15, 2017 9:10 am
这个实验很清楚的:两个任务,各自一个tcp socket client,关闭其中一个socket,会导致另外一个socket select出错。
1.5版本的rtos sdk会有这个错误,但是1.4.2版本的rtos sdk就没有这个现象。
你们自己稍微试验一下就可以知道了。
-
- Posts: 27
- Joined: Tue Sep 29, 2015 4:27 pm
Re: 多线程socket冲突的问题
Postby bobby_jiang » Wed Sep 20, 2017 11:28 pm
这个case有什么进展了吗?thanks
Regards
Bobby
Who is online
Users browsing this forum: No registered users and 120 guests
Login
Newbies Start Here
Are you new to ESP8266?
Unsure what to do?
Dunno where to start?
Start right here!
Latest SDK
Documentation
Complete listing of the official ESP8266 related documentation release by ESPRESSIF!
Must read here!
- All times are UTC+08:00
- Top
- Delete all board cookies
About Us
Espressif Systems is a fabless semiconductor company providing cutting-edge low power WiFi SoCs and wireless solutions for wireless communications and Internet of Things applications. We are the manufacturer of ESP8266EX.