- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
共享参数的多线程编程
PAGE
PAGE 1
PAGE \* MERGEFORMAT 1
哈尔滨理工大学
课 程 设 计
题 目: 共享参数的多线程编程
(网络安全课程设计)
院、 系:计算机科学与技术学院 网络工程系
班 级:
学 号:
姓 名:
同组成员:
指导教师:
成 绩:
2014年06月27日
PAGE \* MERGEFORMAT 15
一.系统设计的目标
了解并掌握C/S模式下TCP的连接以及并发服务器的实现。
了解并掌握多线程在实现共享参数方面的方法。
掌握共享参数多线程编程。
二.系统原理:
实验环境:Ubuntu 12.04系统,GCC编译器
1).建立套接字并在某一约定端口上等待接收客户请求;
2).当接收到来自客户端的服务请求后:建立一新线程 来处理 ,同时主线程继续等待其他客户连接。当新线程处理完成后 ,关闭新线程与客户的通信链路并终止新线程。
3).关闭服务器。
图2-1工作过程
三. 系统功能分析:
C/S结构介绍
C/S 结构,即大家熟知的客户机和服务器结构。它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。
(Client/Server或客户/服务器模式):Client和Server常常分别处在相距很远的两台计算机上,Client程序的任务是将用户的要求提交给Server程序,再将Server程序返回的结果以特定的形式显示给用户;Server程序的任务是接收客户程序提出的服务请求,进行相应的处理,再将结果返回给客户程序。
C/S模式下TCP方式
服务器程序流程(多进程):
程序初始化
填写本机地址信息
绑定并监听一个固定的端口
收到Client的连接后建立一个socket连接
产生一个新的线程与Client进行通信和信息处理
子通信结束后中断与Client的连接
客户端程序流程:
程序初始化
填写服务器地址信息
连接服务器
与服务器通信和信息处理
通信结束后断开连接
套接字技术
所谓socket通常也称作套接字,应用程序通常通过 套接字向网络发出请求或者应答网络请求。以 J2SDK-1.3为例,Socket和ServerSocket类库位于 java .net包中。ServerSocket用于服务器端,Socket 是建立网络连接时使用的。在连接成功时,应用程序两 端 都会产生一个Socket实例,操作这个实例,完成 所 需的会话。对于一个网络连接来说,套接字是平等 的,并没有差别,不因为在服务器端或在客户端而产生 不同级别。不管是Socket还是ServerSocket它们的工 作都是通过SocketImpl类及其子类完成的。
多线程并发服务器的实现
线程,有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元。一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。另外,线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。
在一个进程中的多个线程之间,可以并发执行,甚至允许在一个进程中所有线程都能并发执行;同样,不同进程中的线程也能并发执行,充分利用和发挥了处理机与外围设备并行工作的能力。
线程1
客户端1
服
务
器
线程2
客户端2
线程n
客户端n
图3-3-1 实现模型
基于多线程的 Linux系统下并发服务器能够同时并有效地运行多个任务。采用这种并发系统结构,既增加了服务器程序的功能,又提高了其性能。只有一个处理器时,多个线程不能真正地并行执行。然而,经过固定的时间间隔或当一个线程处于等待状态时,就可从一个线程切换到另一线程,实现多个线程重叠执行。在有多个 CPU的计算机上,如果底层系统支持,则多个线程可真正地被并行执行,服务的并行性潜力得以开发。
四.系统实现:
下面我们通过一个具体的实例来说明多线程并发服务器的具体实现:
服务器端: 循环等候客户连接请求 一旦有客户连接请求开启一个子线程接受并处理客户请求 连接成功后向客户发送欢迎信息,接着接受来自客户的信息,然后将客户信息反转后再返回给客户端 主线程继续等待其他客户请求 服务器具有同时处理多个用户的能力;
客户端:首先与服务器建立连接,接着接收用户输入的客户名字,将名字发给服务器;
文档评论(0)