- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
HUNAN CITY UNIVERSITY
网络协议编程课程设计说明书
设计题目: 基于多线程的网络聊天控制台软件的设计与实现
专 业: 网 络 工 程
学生姓名: 朱江
班级学号: 1206102-21
分组成员:1206102-06郭辉超1206102-18曾涛1206102-21朱江
指导教师: 黄雪华老师 汪彦老师
2015 年 07月 03日
《网络协议编程课程设计》报告
学号:1206102-21 姓名:朱江
一、设计时间
2015年06月29日-----07月03日。
二、设计地点
湖南城市学院信息楼507机房。
三、设计目的
1、巩固《网络协议编程》课程涉及的基本知识,培养灵活运用知识进行独立设计的能力;
2、掌握TCP/IP网络程序框架、Winsock API、高级网络编程API的使用;
3、提高综合运用所学的理论知识独立分析和解决问题的能力;
4、进一步熟悉利用Visual C++6.0进行开发的能力;
5、培养查阅资料,独立思考问题的能力。
四、设计小组成员
1206102-06 郭辉超,1206102-18 曾涛,1206102-21 朱江。
五、指导老师
黄雪华老师、汪彦老师。
六、设计课题
经过小组大部分组员的讨论,决定选取选题(基于多线程的网络聊天控制台软件的设计与实现),编写一个基于局域网的多线程控制台聊天
理由:
1、此系统要求采用C/S模式实现,有利于进一步深刻理解和掌握这种基本的网络编程模式。
2、该系统功能相对简单,易于实现,适于初学者。
3、该系统牵涉到Winsock编程,需要灵活运用这些知识解决实际问题,有利于培养网络系统开发的实际动手能力。
七、基本思路及关键问题的解决方法
设计思路
对于聊天程序,一般都是采用 C/S 模式,即服务器/客户端的模式来设计。这样的模式有利于用户的操作和更好的用户体念。而客户端的设计主要关注与用户的体念和操作方便,其网络设计比较简单;服务器则要完成大量的客户控制、数据转发等操作,设计起来相对更加复杂。
总体设计
聊天程序是一个典型的网络程序,而网络程序的设计大多 是基于 TCP/IP协议来实现的, TCP/IP协议是一个4层协议族,如图1所示。
聊天程序主要是依赖于传输层来实现,在传输层中有两个重要的协议:TCP协议和
UDP协议。其中TCP协议(传输控制协议)是一个面向连接的协议,本协议在进行网络传输过程中首先必须建立一个安全的连接(通常是采用3次握手来实现的),UDP(用户数据报协议)是一种无连接的协议,本协议在进行数据传输前不用建立点对点的连接,所传输的数据不会进行安全检查,如果有丢包的现象也不会重发,本文所涉及的聊天程序采用TCP 协议来实现由于每个电脑可能会有多个服务,而每个服务都采用同一个IP地址来进行收发数据,所以就必须采用一种机制来实现对每个服务的区分这就是端口,对于同一IP地址的不同端口号就代表了不同的服务,所以对于网络聊天程序的服务器端必须设定一个端口号,而客户端则必须连接到服务器端的IP和其指定的端口,如图2所示。
在本文的聊天程序中,采用客户端发送数据-服务器接收数据-服务器转发数据-客户端接收数据的流程来完成。由于该程序是一个服务器和多个客户端进行聊天的,所以在这里就必须注意以下几个问题:
①服务器需要监控端口,以便客户的随时连接;
②服务器需要监控数据流,以便随时接受来自客户端发来的数据;
③为了实现客户点对点的聊天, 则将为每个客户建立一个线程。
服务器设计
服务器设计主要难点是对多线程的设计, 在这里主要涉及 到三方面的内容:
一是对客户端接入的监控,需要一个线程来完成;
二是分别为每个客户端创建一个线程,用于收发数据,使客户端之间不会彼此干扰;
三是每个客户端产生的线程对数据输入流进行监控,随时准备接收数据。对于数据则应该采用数据包的形式来进行封装,分别由发送者的地址,接收者的地址和数据构成,其中地址由昵称、IP和端口构成。当服务器接收到该数据后,将这些数据向每个客户端都发送出去,由客户端来决定是否接收该数据。
所示:另外,当客户端连接到服务器时,将向服务器发送一个数据包,服务器从数据包里面提取出客户端的地址信息和昵称,并且根据这些信息生成一张地址信息和昵称的对照表,且将这张表群发给每个客户;当有客户退出连接时,服务器则从对照表中将该客户的信息删除,并且群发该表给所有客户,
该表的形式如下:
地址昵称
127.0.0.1 朱江
客户端设计
对于客户端的设计则
文档评论(0)