- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《互联网络程序设计》 第八讲 循环服务器 电子科技大学计算机学院 循环服务器概述 循环服务器的类型 使用无连接传输,常见 使用面向连接的服务 循环无连接服务器 使用无连接的循环服务器,采用算法8.2 TIME服务的例子 循环面向连接的服务器 循环的面向连接的服务器,采用算法8.1 DAYTIME服务的例子 特点: 每次处理时间都很少 服务器实现简单 创建被动的套接字 创建一个过程隐藏创建一个被动套接字的细节 获得熟知的端口号,端口号的唯一性问题。 使用什么协议 passiveUDP: 使用无连接的被动套接字 passiveTCP:使用面向连接的被动套接字 绑定IP地址 使用全局变量portbase的优点 安全性:不修改程序中引用端口的地方导致少发生错误 通用性:允许测试的时候,多个服务器版本共存运行,portbase的值不一样,测试版本的端口不会冲突 创建被动的套接字 passiveUDP 调用passivesock实现 passiveTCP 调用passivesock实现 passivesock 三个参数 第一个服务名,第二个协议名,第三个参数指明连接请求队列所需要的长度(只用于TCP套接字) 使用INADDR_ANY代替特定的本地IP地址 getservbyname, getprotobyname, strcmp, memset, socket, bind, listen… 进程结构 循环的无连接的服务器进程结构 只需要一个执行线程 TIME服务器举例 客户使用TIME服务从另一个系统得到当前时间(前面已经讨论过) TIME服务几乎不需要什么计算 UDPtimed.c page91 头文件include 宏定义,变量定义,函数声明 main函数 参数分析 调用passiveUDP recvfrom,sendto循环 循环无连接服务器小结 使用这个服务器的原因 简单服务 服务器为每个请求的计算很少 循环服务器是个简单的服务器 建立被动的套接字的过程 TIME服务 获得系统时间服务 使用UDP访问 编程方法 循环的面向连接的服务器 分配被动的TCP套接字 调用passivesock实现 带有两个参数 第一个是字符串:服务的名字或者端口号 传入连接的请求队列所需的长度 用于DAYTIME服务的服务器 DAYTIME服务:从另外机器上获得当前的日期和时间(前面第7章已经谈过) DAYTIME服务器不需要优化速率 获取和格式化日期要求很少的处理 用户对此服务的需求很少 循环实现就足够了 服务器忙的时候,其他的请求可以排队 进程的结构 使用一个单执行线程 使用两个套接字 一个套接字处理请求 另外一个套接字处理和客户的通信(临时的) DAYTIME服务器例子 TCPdaytimed.c page96 passiveTCP隐藏了很多套接字分配和绑定的细节 QLEN:客户连接请求等待队列长度 在循环中,使用accept从主套接字得到一个连接(accept完成三次握手过程) 对于新的连接服务器调用过程TCPdaytimed进行处理 处理完毕继续循环,再次调用accept阻塞 关闭连接 调用TCPdaytimed返回后,主程序关闭该连接的套接字 调用close是从容关闭:TCP保证所有的数据可靠交付给客户(连接终止前收到确认) close不能立刻返回,调用将会阻塞 连接终止和服务器的脆弱性 连接终止问题 DAYTIME服务器知道何时应该终止连接 复杂客户服务器系统的应用,必须了解客户什么时候是最后一个请求,客户必须发送一个完成的信号 允许客户控制连接时间有危险 误操作的客户可能导致服务器消耗掉套接字和TCP连接之类的资源 客户快速的重复的发出请求,可以把服务器的资源用光(拒绝服务攻击) 小结 循环的面向连接的服务器每处理一个连接循环一次 连接达到以前在accept阻塞 建立新的连接以后创建新套接字处理 处理完毕,关闭,返回accept阻塞 DAYTIME服务 不需要客户的请求信息等待连接就响应 发送完响应,服务器主动关闭连接 每个连接只发送一个响应 电子科大计算机学院 * 用于所有通信的熟知套接字端口 服务器 操作系统 服务器应用进程 用于连接请求的套接字 服务器 操作系统 服务器应用进程 用于单个连接的套接字
您可能关注的文档
最近下载
- 六年级语文上册生字表识字表《写字表》字帖人教版同步字帖描红2.pdf VIP
- 第8课 用制度体系保证人民当家作主 教案 -2023-2024学年中职高教版(2023)中国特色社会主义.docx VIP
- 高二数学(含创意快闪特效)-【开学第一课】2023年高中秋季开学指南之爱上数学课.pptx VIP
- 第8课 用制度体系保证人民当家作主中职专用【2023年秋最新版】.pptx VIP
- 2025年秋新北师大版数学2年级上册全册同步教学设计.pdf
- 某热电厂1×300MW供热机组工程安全预评价报告.doc VIP
- 四年级语文上册《写字表》字帖.pdf VIP
- 地埋管计算方法.doc VIP
- 太极拳理论教学课件.pptx VIP
- 八年级上册语文学习笔记.pptx VIP
文档评论(0)