时间:2020-9-5来源:本站原创作者:佚名
北京中科专注治疗白癜风 http://m.39.net/pf/a_5740834.html

交流群:

往期课程:(往期视频可进群获取)

网络编程第1课:使用QEMU运行RT-Thad网络编程第课:使用VSCode调试RT-Thad

tips:第课内容稍有调整,最终请以RT-Thad文档中心发布为准

网络编程第课:使用RT-Thad文件系统网络编程第4课:使用WiShark进行网络抓包

网络编程第5课:一次完整的网络Ping过程

网络编程第6课:使用Socket实现TCP客户端

网络编程第7课:使用Socket实现TCP服务器

网络编程第8课:使用Socket实现UDP客户端

网络编程第9课:使用Socket实现UDP服务器

网络编程第10课:深入理解TCP/UDP通信原理

??第11课视频

1背景介绍

在RT-Thad使用socket网络编程时,由于socket的cv和send的实现是阻塞式的,因此当一个任务调用cv()函数接收数据时,如果socket上并没有接收到数据,这个任务将阻塞在cv()函数里。这个时候,这个任务想要处理一些其他事情,就变得不可能了。

在要求网络传输的同时,还能处理其他的数据的场景下,就需要用到select了,select能够同时监视多个非阻塞socket的多个事件,这对于以上问题的解决有着重要的意义。

这里我们先用一个简单的利用select实现的tcp客户端,给大家展示select函数的基本用法。在掌握select的基本用法之后,就可以从下面的应用笔记中找到以上问题的解决方法了。

应用笔记:基于多线程的非阻塞socket编程

准备工作.1获取示例代码

RT-Thadsamples软件包中已有一份该示例代码tcpclient_select_sample.c,可以通过env配置将示例代码加入到项目中。

按照下面的路径即可开启

select的示例代码

RT-Thadonlinepackages---

miscellaneouspackages---

samples:RT-Thadkerneland
转载请注明原文网址:http://www.gzdatangtv.com/jsyy/jsyy/13279.html

------分隔线----------------------------