- 1、本文档共28页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
电 子 科 技 大 学
作 业 报 告
一、作业名称
实现加减乘除服务线程池
二、作业要求
1.使用多个队列,每一个计算线程有独立的队列用于存储计算请求,请求线程可用一个队列用于接收结果;
2.只需要实现A(+,-,X,/)B简单两元计算;
3.请求线程与计算线程是多对多关系。
三、设计与实现
1.总体设计
从题目中可以看出,设计时需要多线程和服务的概念。多线程相对多进程而言,可以减少系统的开销,并且能提高 服务的延迟时间,因为线程间的切换时间要远远小于进程间切换时间,多线程编程可以提高程序并发性,实现要求中的请求 线程与计算线程多对多的关系。而服务的概念就是有要有服务器、客户端,并且要协同服务端与客户端的操作一致,于是先入先出的队列操作满足此要求,而服务端与客户端的数据传输需要用到套接口编程。目前最常用的套接口是字:字节流套接口(基于TCP)和数据报套接口(基于UDP),当然还有原始套接口(原始套接口提供TCP套接口和UDP套接口所不提供的功能,如构造自己的TCP或UDP分组)等,进程在最初建立子程后,程
图1 总体结构框图
2.客户/服务器模型
在客户/服务器模型中,多个相互通信的都作为客户端,与网络服务器进行连接,并通过服务器进行信息的传递所以多个客户端之间的通信就变为了客户端与服务端的通信。进行需要分别编写服务器端和客户端的程序,服务器和客户端之间相互通信的同步关系和各自的程序流程如图所示。
图流程图
网络套接字(socket)的概念
图3 socket的TCP/IP模型结构图
Socket 分为以下三种类型。 流式套接字( Stream Socket) : 是最常用的套接字类型, 文件传送协议( FTP) 即使用流式套接字。提供一个面向连接、可靠的数据传输服务, 数据无差错、无重复地发送, 且按发送顺序接收。内设流量控制, 避免数据流超限; 数据被看作是字节流, 无长度限制。数据报套接字(Datagram Socket) : TCP /IP 协议族中的UDP 协议使用此类接口, 它是无连接的服务,数据通过相互独立的报文进行传输, 提供了一个无连接服务。数据包以独立包形式被发送, 不提供无错保证, 数据可能丢失或重复, 并且接收顺序混乱。原始数据报套接字(Raw Socket) : 该接口允许对较低层协议, 如IP、ICMP 直接访问。常用于检验新的协议实现或访问。
2.1. Socket 通信过程
基于TCP 可靠连接的客户与服务器连接进程流程图如图4所示。
图4 基于TCP的客户服务器模型
Socket 工作过程如下: 服务器首先启动, 通过调用Socket(), 建立一个Socket, 然后调用bind()将该Socket 和本地网络地址绑定在一起, 再调用listen()使Socket 做好侦听的准备, 并规定它的请求队列的长度,之后就调用accept()来接收连接。客户在建立Socket 后就可调用connect()和服务器建立连接。连接一旦建立,客户机和服务器之间就可以通过调用send()和recv()来发送和接收数据。最后, 待数据传送结束后, 双方调用close()关闭Socket。
2.2. Socket 通信程序开发
下面详细说明Socket 通信程序的开发过程:
①步骤1: 建立套接口socket()
int sockfd = socket ( int domain, int type, int protocol)
其中domain 参数指定socket 协议族, 包括PF_LOACL 和PF_INET, PF_LOACL 表示使用本地套接口, PF_INET 表示使用Internet 套接口。Type 参数定义了套接口的类型, 包括SOCK_STREAM 和SOCK_DGRAM, SOCK_STREAM 指定为流套接口,SOCK_DGRAM指定为数据报套接口。protocol 通常赋值0, 意味套接口使用默认的TCP /IP 协议。socket()调用返回一个非负整型socket 描述符, 可以在后面的调用使用它, 当其值为- 1 时, 说明有错误发生。
② 步骤2: 绑定套接口bind()
当用socket()建立套接口后, 该套接口还是处于无名状态的, 无名套接口就像没有号码的电话一样,别人无法向发送信息( 在同一linux 内核下可实现无名状态下通信) 。为了像电话分配电话号码一样, 可以通过bind()为建立的套接口绑定一个名字,即分配IP地址和 端口。这一步对客户端不是必需的。
int bind ( int sockfd, struct sockaddr _my_addr,int addrlen)
sockf
您可能关注的文档
- 克莱克词汇(版本)详解.doc
- 客服部操作手册ok详解.doc
- 客服部精细化管理细则详解.doc
- 客户服务与管理课程标准详解.doc
- 客户关系管理毕业范文论文详解.doc
- 客户关系管理教案(详案)详解.doc
- 客户关系管理信息系统开发详解.doc
- 客户管理管理系统详解.doc
- 客户管理系统详解.doc
- 客户化开发服务产品交付作业指导书详解.doc
- 安全监察人员每日一练试卷带答案详解(巩固).docx
- 2025安全监察人员考前冲刺试卷附参考答案详解【夺分金卷】.docx
- 2025年安全监察人员考前冲刺练习附完整答案详解【典优】.docx
- 2025安全监察人员题库检测试题打印及完整答案详解(各地真题).docx
- 2025安全监察人员自我提分评估附答案详解【突破训练】.docx
- 2025年安全监察人员常考点试卷含完整答案详解(精选题).docx
- 2025安全监察人员每日一练试卷(实用)附答案详解.docx
- 安全监察人员综合提升测试卷附参考答案详解【培优B卷】.docx
- 安全监察人员练习题【原创题】附答案详解.docx
- 2025安全监察人员经典例题附答案详解【A卷】.docx
文档评论(0)