北京中科专注治疗白癜风 http://m.39.net/pf/a_5740834.html 交流群: 往期课程:(往期视频可进群获取) 网络编程第1课:使用QEMU运行RT-Thad网络编程第课:使用VSCode调试RT-Thadtips:第课内容稍有调整,最终请以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
|