网络编程入门篇.PDF

  1. 1、本文档共24页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
网络编程入门篇 Select:非阻塞Socket 编程 目录 • 基础知识 • 具体示例 • 注意事项 • 示例代码讲解 基础知识 基础知识 • 在RT-Thread 使用socket 网络编程时,由于socket 的recv 和 send 的实现是阻塞式的,因此当一个任务调用recv() 函数接收数 据时,如果socket 上并没有接收到数据,这个任务将阻塞在recv() 函数里。这个时候,这个任务想要处理一些其他事情,就变得不可 能了。 • 因此,在要求网络传输的同时,还能处理其他的数据的场景下,就 需要用到select 了,select 能够同时监视多个非阻塞socket 的多 个事件,这对于以上问题的解决有着重要的意义。 基础知识 • 下面我们先介绍一下select 的API ,然后展示select 使用时的流程, 接着用一个简单的示例程序,给大家具体的展示select 函数的基本 用法,最后讲解一下示例程序。 • 在掌握select 的基本用法之后,就可以从下面的应用笔记中找到 socket 非阻塞编程的具体方法了。 • 应用笔记:基于多线程的非阻塞socket 编程 select API 说明 int select(int nfds, fd_set* readfds, fd_set* writefds, fd_set* errorfds, struct timeval* timeout); 参数 描述 nfds 集合中所有文件描述符的范围,即所有文件描述符的最大值加1 readfds 需要监视读变化的文件描述符集合 writefds 需要监视写变化的文件描述符集合 errorfds 需要监视出现异常的文件描述符集合 timeout select 的超时时间 返回值 描述 正值 监视的文件集合出现可读写事件或异常事件 0 等待超时,没有可读写或异常的事件 负值 select 出现错误 使用流程 Select 的使用流程如右图所示: – 定义fd_set 结构体 – 计算maxfdp1 – FD_ZERO – FD_SET – Select – FD_ISSET 具体示例 工程配置 • RT-Thread samples 软件包中已有一份该示例代码tcpclient_select .c,可以通 过env 配置将示例代码加入到项目中。 • 按照下面的路径即可开启select 的示例代码 RT-Thread online packages miscellaneous packages samples: RT-Thread kernel and components samples [*] a network_samples package for rt-thread [*] [network] tcp client by select api • 保存并更新软件包pkgs --update • 编译工程scons • 然后运行qemu 开启TCP服务器 • 在运行示例代码之前需要先在电脑上开启一个TCP 服务器,这里以网络调试 助手IPOP 为例。 查看本机ip地址 • 在windows系统中打开命令提示符,输入ipconfig 即可查看本机ip 运行示例代码 • 在qemu运行起来后,在msh 命令行下输入下面的命令即可让示例代码运行。 msh tcpclient_select 192.168.12.44 5000 • tcpclient_select 有两个参数URL P

文档评论(0)

***** + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档