- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
计算机网络编程 第九讲 并发服务器
TCPmechod.c page118 在熟知端口上打开一个被动套接字 使用系统函数getdtablesize来决定描述符最大个数 使用FD_ZERO和FD_SET创建一个比特向量,对应于希望测试的套接字描述符 select等待一个或者多个描述符就绪 FD_ISSET测试哪个描述符就绪 FD_CLR关闭连接后,从描述符组中删除 计算机网络编程 电子科大计算机学院 * Select调用时,根据描述符集中被设置的位得到描述符值,进而找到对应的套接字结构,看是否有数据就绪(读/写/异常就绪),没有就绪的描述符在描述符集中对应位就被清0,所以每次调用select前都要将我们所关心的描述符在描述符集中置1. select返回描述符集中已经准备好的总位数。 计算机网络编程 电子科大计算机学院 * 并发服务器通常是数据驱动的,不是下层操作系统中的时间分片机制驱动的 服务处理很少的情况下,单线程应用异步I/O管理多个连接,和多线程实现一样高效 单线程实现中,一个执行线程完成了主线程和从线程的职责 一组描述符表 使用select函数 ECHO服务器的例子 计算机网络编程 电子科大计算机学院 * * * * * * * * * * * * * * * * * * * * * * * * * 电子科大计算机学院 电子科大计算机学院 电子科大计算机学院 电子科大计算机学院 电子科大计算机学院 电子科大计算机学院 电子科大计算机学院 第九讲 并发服务器 * 多进程实现并发(第11章) 多线程实现并发(第12章) 单线程实现并发(第13章) 计算机网络编程 电子科大计算机学院 * 并发的面向连接的服务器 采用算法8.4的最常用的服务器设计 主服务器进程在机器启动的时候自动一直运行,对每个客户的新连接创建一个新的从线程/进程进行处理 并发ECHO的例子 多进程(每个进程含一个线程)设计的并发服务器 多线程(属于同一个进程)设计的并发服务器 单线程设计的并发服务器 计算机网络编程 电子科大计算机学院 * 功能: 客户打开到某个服务器的连接,然后在该连接上重复发送数据,并读取从服务器返回的回显, 服务器响应每个客户,接受连接,读取来自该客户的数据,并原样返回给客户。 服务器在发送响应前并非读取全部输入,只是交替读写 服务器在遇到文件结束的条件后,关闭连接 计算机网络编程 电子科大计算机学院 * 如果使用循环服务器实现 某些客户可能发送大量的数据,导致其他的客户延迟 使用并发服务器实现 避免了长时间的延迟,不允许单个客户占用所有的资源 使服务器与许多客户同时进行通信 客户感觉服务器提供了较短的响应时间 计算机网络编程 电子科大计算机学院 * 服务器包括一个主进程,以及零个或者多个从进程。每个进程一个线程 主服务器使用accept阻塞调用,节约CPU资源,连接到来的时候,accept马上返回。 计算机网络编程 电子科大计算机学院 * 用于单个连接的套接字 用于连接请求的套接字 主进程 从进程1 从进程2 从进程3 操作系统 服务器应用进程(或线程) #include 语句 变量定义,宏定义,函数声明 主函数 参数处理 建立被动套接字 循环等待连接,如果有新连接,则fork一个新的线程,调用TCPechod进行处理 TCPechod函数 处理echo服务 计算机网络编程 电子科大计算机学院 * 使用fork的服务器动态生成进程,可能导致不完全的进程终止 linux在一个子进程退出的时候,会给父进程一个信号(signal) 正在退出的进程保持在死状态,直到父进程执行wait3系统调用为止 signal(SIGCHLD, reaper)主服务器进程收到子进程退出信号的时候,执行函数reaper 函数reaper调用函数wait3完成子进程的终止并退出。 参数WNOHANG指明wait3不要为了进程退出而阻塞等待 计算机网络编程 电子科大计算机学院 * 面向连接的并发技术 使用多进程的方式实现:fork 主进程的线程永远不会和任何客户打交道,只接受连接,创建一个从进程处理各个连接 从进程从主进程调用fork后立即执行 主进程关闭新连接所用的描述符的副本 从进程关闭主描述符的副本 计算机网络编程 电子科大计算机学院 * 一个进程中有一个或者多个线程 linux中的线程符合POSIX线程标准,1003.1c linux中线程的特点 动态创建:pthread_create,具有上限 并发执行:多处理机上可以并行 抢先:系统自动在多个线程中调动CPU资源 私有局部变量:每个线程有自己的私有堆栈,存放局部变量 共享全局变量:一个进程的所有线程共享全局变量 共享文件描述符:一个进程内的所有线程共享一组文件描述符 协调和同步函数:具有线程协调和同步执行的函数 计算机
您可能关注的文档
最近下载
- 《机器视觉及其应用技术》课后答案.docx VIP
- 宗教中国化的历史演进与当代实践.pptx VIP
- 木犀草素、荭草苷和异荭草苷UGT代谢机理和BCRP外排转运蛋白调控其代谢机制得研究.pdf VIP
- 血液透析患者治疗中突发呼吸心跳骤停的应急预2025最新学习.docx VIP
- 《白桦》精品教案.docx VIP
- 苏教版小学五年级数学下册全册试卷提升专题训练(含答案).pdf VIP
- 施工质量及保障措施.doc VIP
- 《GB/T 6829-2024剩余电流动作保护电器的一般安全要求》.pdf
- 小学语文教学经验交流ppt课件.pptx VIP
- [钢结构施工设计]某钢排架结构厂房施工组织设计方案.doc VIP
文档评论(0)