网络课程设计报告

河北工业大学管理学院

课程设计报告

成绩:         

 

1、规划背景问题描述,计算机网络规划需求分析

背景问题描述

某大学校园网规划

某大学有师生一万多人,主要的16栋建筑物位于以图书馆为中心的从60米到500米的地理范围内。拟建覆盖全校(或分校、学院)的校园网,包括局域网和接入网,能支持办公自动化、信息管理、科研与教学工作,能接入CERNET,与INTERNET相联。总体规划,分段实施。

计算机网络规划需求分析

1)校园网主干结构采用当前的主流技术,并保证一定的技术先进性;

2)组建专门的网络中心,负责校园网运行和管理,核心网络设备应具备很强的交换能力,为将来网络容量需求的成倍增长预留足够的扩展空间;

3)各系级单位一般建成独立局域网后,再接入校园网;暂不能建局域网的单位直接接入校园网;

4)网管设备(软、硬件)能实现对网络设备的实时监控和网络流量计费;

5)要有完善的安全机制,防止来自外部和内部的非法访问;

6)校园网应能够为全校师生提供以下应用服务:

l WWW服务

l Email服务

l 网上多媒体教学,能提供视频点播服务

l 校外图书资料检索

l 校内行政管理

l 拨号上网服务

7)校园网以不低于1GMbps的带宽接入CERNET网络中心。

2、网络总体方案设计(包括局域网、接入网等)、该方案的特点

  考虑到不同的用户对网络的不同用法和时间的需求,所以在十六栋建筑内采用星形连法,建筑间采用环形结构,网络中心设在图书馆,并且在网络层上采取计费设施,可以对用户进行计费,同时与图书馆的资料库相连,可以快速查找图书馆的书籍,建筑内局域网采用高速以太网,建筑间和图书馆之间采用吉比特以太网

3.网络体系结构设计:详细的拓扑结构设计

4.选择通信媒体:用户端和中继系统选定传输电缆和传输资源

  建筑物内采用2对utp5类线,而建筑间与图书馆之间采用4对5类线utp,

5、节点规模设计:确定网络的主要节点设备(服务器、客户机、交换机等)的性能指标、台数

中心主交换机

要求具有千兆交换技术,背板带宽达3.5GB以上、有2个以上GBIC光纤口、有25个以上100MB RJ45口、支持第三层交换的虚网路由(VLAN)一个。

以太网交换机

华为S7706主要参数

支持:

网管支持

产品类型

千兆以太网交换机

传输速率(Mbps)

10Mbps/100Mbps/1000Mbps

应用层级

三层

交换方式

存储-转发

背板带宽(Gbps)

1.2Tbps

包转发率

540Mpps

网络标准

IEEE 802.3,IEEE 802.3u,IEEE 802.3ab,IEEE 802.3z,IEEE 802.3x,IEEE 802.1Q,IEEE 802.1d,IEEE 802.1X

传输模式

全双工/半双工自适应

网管功能

支持自动配置功能
支持CLI配置
支持Telnet远程配置
支持SNMP V1/V2/V3
支持RMON

背板带宽达0.5GB以上、1个GBIC千兆上行口、提供6个以上10/100MR J45口十六个。

中央服务器

性能强大,可以承受巨大地数据处理,中小企业数据中心服务器推荐IBM X3650 M3

基本配置:



操作系统

Windows.NET Server是在Windows 2000的基础上建立的,其改进和增强的功能,可使用户充分利用Microsoft.NET软件自动配置的优点。它是Microsoft提供的最全面、功能最强大以及最灵活的服务器操作系统。Windows.NET Server实现了与基于Windows 2000的服务器的全面交互作用。……并可立即获得增强的管理功能、可靠性、安全性、性能和集成的XML Web服务所带来的好处。Windows.NET Server提供四个主要优点,使你可以:

(1)在最可靠的服务器上开展你的业务:……它是Microsoft提供的最全面、功能最强大以及最灵活的计算结构。……

(2)在高效的开发平台上生成商业应用程序:……开发人员可以使用Web服务和托管代码直接在应用程序服务器上生成应用程序,然后在任何Web应用程序平台上运行它们。

(3)增强了工作站间的通信和合作:……工作站可以随时随地在任何设备上访问信息,从而提高了企业的生产率。

(4)安全连接到你的客户:……

数据库

上述三种数据库系统在体系上、操作上都具有很多相似的地方,但又各有不同。考虑选择合适的数据库系统,首先应该从实际应用的角度出发。因为不同的数据库价格差异极大(同品牌的数据库也会因为其支持程度的不同存在很大的价格差异),完全没有必要为不需要的功能付出过多的费用。除此之外,还需要考虑数据库的易用性(人机界面)稳定性以及兼容性、技术支持等方面的因素,我们可以从附表中得到一个大体的印象。

另外,还必须考虑数据库系统与操作系统以及原有(或者是技术人员熟悉的)编程工具以及。原有系统之间的配合,对于有商业价值或者对数据库有特殊要求的数据库系统,还

必须要考虑到数据库的速度、所提供的最大访问量以及备份和恢复能力等因素。但是无论采用哪一种数据库都应该以经济实用为本!

网络管理软件

3Com公司的Network Supervisor Version 3.5版本……可以使网络管理人员加强对网络设备管理的控制能力,防止假冒的管理者对设备配置随意改动。……能够以IP子网的形式或者简单的第二层视图的方式来向网络管理人员展示网络图,……利用开放的网络管理平台进行网络管理……使网络的管理人员能够更加集中地对网络运行状态进行监控。

……通过图形化方式来发现、映射并且展示网络中的各种链路配置以及IP设备分布情况,……能够轻松地对网络所承受的流量压力进行监控、设定极限与告警、观察网络事件、以用户所要求的格式生成监测报告并运行各类设备配置工具。

综上所述,本方案选择Windows.NET Server 为网络操作系统,选择SQL Server 为数据库软件。选用Network Supervisor Version为网络管理软件。

6  IP地址子网划分及方案

  采用子网划分的方法ip={<网络号>,<子网号>,<主机号>}

将128个子网号分为十六分,乘以128位主机号,可同时容纳1024人上网,满足平时的需要

服务器:http://m.pconline.com.cn/shop589065/nid:2706766/news_detail.html

核心交换机:http://product.pconline.com.cn/switch/ruijie/350309_detail.html

交换机:http://product.yesky.com/product/710/710951/

操作系统:摘自 电脑报20##年合订本(上) 《Windows.NET Server 服务器管理简明教程》

数据库:摘自 电脑报20##年27期 办公自动化 《数据是金——常用的企业数据库》曾思谨

网络管理软件:摘自 www.3Com.com.cn 《3Com®Network Supervisor 网络管理套件增强版》

 

第二篇:网络课程设计报告模板

课程设计(论文)任务书

院 业班

一、课程设计(论文)题目 基于udp的点到点聊天程序

二、课程设计(论文)工作 2008 年 6 月 23 日起至 2008 年6 月 29日止。

三、课程设计(论文) 地点: 软件机房

四、课程设计(论文)内容要求:

1.本课程设计的目的

(1)使学生掌握系统各功能模块的基本工作原理;

(2)使学生学会系统调试;

(3)培养学生分析、解决问题的能力;

(4)提高学生的软件文档写作能力。

2.课程设计的任务及要求

1)基本要求:

(1)分析系统各功能模块的工作原理;

(2)需求分析、概要设计、详细设计和调试分析、测试分析、课设心得、参

考文献

(3)提出系统的设计方案;

(4)对所进行编程、调试、修改。

2)创新要求:

在基本要求达到后,可进行创新设计,如:深入编程,高级编程;

3)课程设计报告编写要求

(1)要按照书稿的规格打印誊写课设报告

(2)报告包括目录、绪论、正文、小结、参考文献、附录等

(3)报告装订按学校的统一要求完成

4)答辩与评分标准:

(1)考勤与学习态度:20分;

(2)完成原理分析和设计过程:完成:35分;

(3)完成调试运行结果正确:30分;

(4)答辩:15分。

5)参考文献:

(1)贾 斌等.网络编程技巧与实例.北京:人民邮电出版社,2001

(2)侯 捷 .《 深入浅出MFC 》 华中科技大学出版社 6)课程设计进度安排

内容 天数 地点

总体需求与分析构思及收集资料 1 图书馆 各模块的编程实现,调试与修改 3 机房

撰写论文与答辩 1 图书馆、机房,

学生签名:

08年 6 月 29日

课程设计(论文)评审意见

(1)考勤与学习态度(20分):优( )、良( )、中( )、一般( )、差( );

(2)原理与设计分析(35分):优( )、良( )、中( )、一般( )、差( ); (3)调试与运行(30分):优( )、良( )、中( )、一般( )、差( );

(4)答 辩(15分):优( )、良( )、中( )、一般( )、差( );

(5)格式规范性及考勤是否降等级:是( )、否( )

评阅人: 职称: 讲师

20xx年 6 月30日

目 录

一、需求分析 ................................................................................ - 1 -

1.1 winsock编程技术简介………………………………………..1

1.2 点到点聊天的原理及UDP协议的简介?????????.3

二、概要设计 ..................................................................................... 6

三、详细设计 ..................................................................................... 8

四、调试分析 ................................................................................... 13

五、测试分析 ................................................................................... 14

六、课设心得 ................................................................................... 15

七、参考文献 ................................................................................... 16

课程设计

一 需求分析

在网络越来越发达的今天,人们对网络的依赖越来越多,越来越离不开网络,由此而产生的聊天工具越来越多,类似QQ,网络聊天时一类的聊天系统的发展日新月异,因此产生了制作一个类似QQ的网络聊天工具的;而且通过制作该程序还能更好的学习网络软件编程知识.

1.1 winsock编程技术简介

目前,Inte.NET已成为世界上最大的TCP/IP网络。早期的站点是unix机器,一组称为Berkeley插口的约定成为INTERNET上UNIX机器之间利用TCP/IP进行通信的标准。其他操作系统也用TCP/IP进行通信,这极大地促进了INTERNET的发展。

windows插口

WINSOCK标准定义了一个DLL接口,通常叫做WINSOCK.DLL或者WSOCK32.DLL。无论机器上安装了哪一个DLL,只要函数的名字,参数含义以及最终的功能是相同的,应用程序就可以调用这些函数。

在插口编程里一个重要的概念就是一个插口的端口。INTERNET上的每一个站点都有一个数字地址称为IP地址,通常是由逗号分开的四个数。在机器上运行的程序可以随心所欲地用插口与其他机器进行通信。

请求到达机器时携带一个端口号,一个大于1024的数,它表明此请求是给那个应用程序的。

多数插口的工作是基于连接的:两个程序在每一端用一个插口形成一个连接,然后沿着该连接收发数据。有些应用程序倾向无连接地发送,但是这些数据的到达是没有保障的。

客户机/服务器模式

在TCP/IP应用中,如何采用客户机/服务器模式。

客户机一方,TCP/IP应用程序功能如下:

1) 打开通信信道(申请一套接字),并连接到服务器在主机的保留端口,该端口对应服务器的TCP/IP进程。

2) 向服务器发出请求报文,等待接收应答。

3) 从服务器方收到最终应答结果,或在不再请求时关闭信道并终止客 - 1 -

课程设计

户机进程。

服务器一方,TCP/IP应用程序动作如下:

1) 打开通信信道(申请一套接字),通知本地主机在某一保留端口接收客户机请求。

2) 等待客户请求到达指定端口。

3) 接收到请求,启动一新进程处理用户请求,同时释放旧进程以响应新的客户请求,一旦服务完成,关闭新进程与客户的通信链路。

4) 继续等待客户机请求。

5) 如果不想响应客户机请求,关闭服务器进程。

综上所述,TCP/IP应用中的服务器程序必须先于客户机进程启动,直到对客户机的响应结束或强迫终止。

WINSOCK1.1版通过异步选择机制来实现非阻塞通信方式,对于非阻塞方式,函数被调用后立即返回,当传送完成后由WINSOCK给进程发一个事先约定好的消息.

WinSock是Windows Sockets的缩写,它作为Windows和TCP/IP之间的接口。而我们都知道TCP/IP在互联网举足轻重的作用,如果希望了解Socket,那么Berkeley Socket不可不提,它是在UNIX下对TCP/IP进行编程的标准模式。WinSock的设计和它很象,这样可以使UNIX上的应用程序在Windows平台上使用。但是,两者也有一些区别,如WinSocket利用了Windows的一些特点,而这些特点对于UNIX来说是没有的。

WinSock是一个DLL,它运行于Windows 3.x,Windows for Workgroups,windows NT和Windows 95下。WINSOCK.DLL是与TCP/IP的接口,通过这个接口和网络进行连接。

WINSOCK.DLL实际上是作为WinSock应用程序和TCP/IP协议栈之间的中间层。用户的应用程序告诉WINSOCK.DLL需要做什么,WINSOCK.DLL将这些命令传送到TCP/IP协议栈,由TCP/IP协议栈传送到网络。但是重要的事情是用户必须注意用户使用的WINSOCK.DLL必须和TCP/IP的版本号一致。不要以后它们都叫WinSocks它们就是一样的。所以,如果用户在使用microsoft的TCP/IP,就不能使用Trumpet Winsock。同样,如果用户正在使用SLIP连接,而希望由Chameleon Sampler的Winsock切换到Trumpet Winsock,用户必须删除Chameleon的WINSOCK.DLL,然后再安装新的 - 2 -

课程设计

WINSOCK.DLL。

1.2 点到点聊天的原理及UDP协议的简介

利用 WinSock 控件可以与远程计算机建立连接,并通过用户数据文报协议 (UDP)。这种可以用来创建客户与服务器应用程序。与 Timer 控件类似,WinSock 控件在运行时是不可见的。

用途

1 创建收集用户信息的客户端应用程序,并将收集的信息发送到某中央服务器。

2 创建一个服务器应用程序,作为多个用户的数据的汇入点。

3 创建“聊天”应用程序。

在使用 WinSock 控件时,首先需要考虑使用什么协议。因此我选择UDP协议

UDP 协议是一种无连接协议,两台计算机之间的传输类似于传递邮件:消息从一台计算机发送到另一台计算机,但是两者之间没有明确的连接。另外,单次传输的最大数据量取决于具体的网络。

协议的设置

在设计时,可以按如下方式设置应用程序使用的协议:在“属性”窗口中单击“协议”, sckUDPProtocol。也可以使用程序代码来设置 Protocol 属性,如下所示:

Winsock1.Protocol = sckTCPProtocol

确定计算机的名称

在与远程计算机相连接的时候,需要知道它的 IP 地址或者它的“好听的名字”。IP 地址是一串数字,每三个数字为一组,中间用点隔开(形如 xxx.xxx.xxx.xxx)。通常,最易记住的是计算机的“好听的名字”。

确定计算机的名字

1 在计算机的“任务栏”上,单击“启动”。

2 在“设置”项中,单击“控制面板”。

3 双击“网络”图标。

4 单击“标识”选项卡。

5 在“计算机名称”框中可以找到计算机的名称。

上面找到的计算机名称可以作为 RemoteHost 属性的值。

UDP 初步

创建 UDP 应用程序比创建 TCP 应用程序还要简单,因为 UDP 协议不需要显式的连接。一个 Winsock 控件必须显式地进行“监听”,另一个必须使 - 3 -

课程设计

用 Connect 方法初始化连接。

UDP 协议不需要显式的连接。要在两个控件中间发送数据,只需进行以下的三步即可(在连接的双方):

1. 将 RemoteHost 属性设置为另一台计算机的名称。

2. 将 RemotePort 属性设置为第二个控件的 LocalPort 属性。

3. 调用 Bind 方法,指定使用的 LocalPort。(下面将详细地讨论该方法。) 因为两台计算机的地位可以看成“平等的”,这种应用程序也被称为点到点的。为了具体说明这个问题,下面将创建一个“聊天”应用程序,两个人可以通过它进行实时的交谈。

创建一个 UDP 伙伴

1 创建一个新的 Standard EXE 工程。

2 将缺省的窗体的名称修改为 frmPeerA。

3 将窗体的标题修改为“Peer A”。

4 在窗体中放入一个 Winsock 控件,并将其命名为 udpPeerA。

5 在“属性”页上,单击“协议”并将协议修改为 UDPProtocol。

6 在窗体中添加两个 TextBox 控件。将第一个命名为 txtSend,第二个命名为 txtOutput。

7 为窗体增加如下的代码。

Private Sub Form_Load()

'控件的名字为 udpPeerA

With udpPeerA

'重点:必须将 RemoteHost 的值

'修改为计算机的名字。

.RemoteHost= "PeerB"

.RemotePort = 1001 '连接的端口号。

.Bind 1002 '绑定到本地的端口。

End With

frmPeerB.Show '显示第二个窗体。

End Sub

Private Sub txtSend_Change()

'在键入文本时,立即将其发送出去。

udpPeerA.SendData txtSend.Text

End Sub

Private Sub udpPeerA_DataArrival _

(ByVal bytesTotal As Long)

Dim strData As String

- 4 -

课程设计

udpPeerA.GetData strData

txtOutput.Text = strData

End Sub

创建第二个 UDP 伙伴

1 在工程中添加一个标准窗体。

2 将窗体的名字修改为 frmPeerB。 3 将窗体的标题修改为“Peer B”。 4 在窗体中放入一个 Winsoc

- 5 -

课程设计

二、概要设计

运用所学的编程知识,加上网络方面的一些知识结构,模拟QQ聊天工具,通过SOCKET编写的简易网络聊天工具。

1)聊天程序的功能及其相关网络协议

1、建立侦听服务

这个需求是服务器端的需求。

2、用户登录

包括客户端请求登录以及服务器端响应登录两个过程。

3、收发聊天信息

包括客户端发送聊天信息以及服务器端转发聊天信息两个过程。

4、收发系统信息

由服务器端发送给客户端的信息。

5、用户下线

包括客户端请求下线以及服务器响应请求两个过程,这个与用户登录类似。

6、服务器关闭

该聊天工具采用C/S结构,在分布处理过程中,使用基于连接的网络通信模式。该通信模式首先在客户机和服务器机之间定义一套通信协议,并创建一个SOCKET类,利用这个类建立一条可靠的连接;然后,客户/服务器再在这条连接上可靠地传输数据。客户机发出请求,服务器监听来自客户机的请求,并为客户机提供响应服务。这就是典型的“请求-应答”模式。

服务器端和客户端的功能说明如下:

服务器:

功能:

1、启动服务,建立侦听,接受客户端连接。

2、接收、分析、转发聊天消息

3、向客户端发送系统消息

4、关闭服务,并向客户端发送服务器关闭消息

- 6 -

课程设计

客户端:

功能:

1、连接服务器,发送用户登录请求

2、向服务器发送聊天信息

3、接收服务器转发的聊天信息

4、接收服务器发送的系统信息

5、响应服务器关闭的消息

TCP/IP服务器与客户端套接字中,客户通过服务器端的IP地址和端口号来建立和服务器的连接,java.net.Sockte类勇于执行客户端的TCP操作。

每个服务器套接字运行在服务器特定的端口,监听在这个端口的TCP连接。当远程的客户端的Socket试图与服务器指定端口建立连接时,服务器被激活,判定客护端的连接,并打开两个主机之间固有的连接。一旦客户端与服务器建立了连接,则两者之间就可以传送数据,而数据是通过这个固有套接字传递的。

在ServerSocket类中包含了创建ServerSocket对象的构造方法,在指定端口监听的方法,建立连接后发送和接受数据的方法。

服务器与客户端根据一定的网络协议交互,直到关闭连接。

- 7 -

课程设计

三 详细设计

基于客户/服务器模型的套接字编程,服务器端和客户端的设计如下所示:

1)、服务器

针服务器功能,设计了下面4个类:

1、用户信息链表类: 提供一个链表数据结构以及一组链表的操作函数,

用于保存用户信息。提供链表的添加、删除以及查找这3个基本功能。 部分功能代码如下:

public class UserInfoList {

} Node root; Node pointer; int count; public UserInfoList() { } root = new Node(); root.next = null; pointer = null; count = 0; public void add(Node n) //新的用户登陆,向链表中加入成员用户 {??} public void del(Node n) //用户离开,从链表中删除该用户 {??} public int getCount() //统计当前用户的人数 {??} public Node find(String username) //通过用户名来查找该用户的状态 {??} public Node find(int index) //通过结点来查找该用户的状态 {??}

2、服务器主框架类: 提供服务器的界面,并且实现了服务器的启动和关 - 8 -

课程设计

闭以及服务器系统的消息的发送功能。

部分代码如下:

public class ServerFrame extends JFrame { //服务器的界面设置

??

public void init() {

Border bevelBorder = BorderFactory.createBevelBorder( BevelBorder.RAISED, Color.white, Color.white, Color.white, Color.white); ???????? ///////////提供服务器的界面,排版及部件 pack(); jbStartServer.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { } startServer(); }); /////////////响应事件监听者

?? /////////////同上面的实现事件

}

服务器的启动和关闭以及服务器系统的消息的发送:

public void startServer() {??}

public void stopServer() {??} public void sendStopToAll() {??} public void sendMsgToAll(String msg) {??} public void sendSystemMessage() {?? }

3、务器侦听线程类: 负责侦听客户端连接,并实现响应用户登录的功能。 public class ServerListenThread extends Thread {

ServerSocket server; ///定义SOCKET端口 ?????? public void run() { while(!isStop && !server.isClosed()) { ///通过SOCKET端口进行传输的数据流及传输流 - 9 -

课程设计

} } /////获取函数getOutputStream()和getInputStream() } client = new Node(); client.socket = server.accept(); client.output=new bjectOutputStream(client.socket.getOutputStream()); client.output.flush(); client.input = new ObjectInputStream(client.socket.getInputStream()); client.username = (String)client.input.readObject();

4、服务器接收线程类: 负责接收客户端消息,并且对消息作出判断和相应的响应

public void run() {

if (type.equalsIgnoreCase("聊天信息")) { String toSomebody = (String) client.input.readObject(); String status = (String) client.input.readObject(); String action = (String) client.input.readObject(); String message = (String) client.input.readObject(); sendUserList(); //把一个新的成员列表发给所有的用户 while (!isStop && !client.socket.isClosed()) { String type = (String) client.input.readObject();

///// 获取来自客户的消息,并进行分类发送

String msg = client.username + " " + action + "对" + toSomebody + "说:" + " " + message + "\n"; if (status.equalsIgnoreCase("悄悄话")) { msg = "[悄悄话]" + msg; } //分类发送客户的消息 ?????????? } public void sendToAll(String msg) {??} //发送消息给所有的用户 - 10 -

课程设计

2)、客户

考虑设计两个类:

1、客户端主框架类: 用户界面、用户登录与下线、发送聊天信息 public class ClientFrame extends JFrame {

Socket socket; //定义SOCKET客户端 ObjectOutputStream output; //定义到服务器的输出流 ObjectInputStream input; //定义从服务器获取数据的输入流

????

public ClientFrame() {????//客户端界面的设置,排版及组件 serverAddress = new JTextArea("请输入服务器地址");//输入连接到服务器的IP

login.addActionListener(new ActionListener() {

}); public void actionPerformed(ActionEvent e) { } LogIn(); 地址

??????????//同上一样的时间响应

} public void LogIn() { /////////网络数据通信 try { socket = new Socket(serverAddress.getText(), 8000);

//设置服务器的IP和端口号80000

} catch (UnknownHostException e) { } output = new ObjectOutputStream(socket.getOutputStream());//输出信息 output.flush(); input = new ObjectInputStream(socket.getInputStream());//获取输入信息 output.writeObject(textfield.getText());//将消息域的信息发给服务器 - 11 - serverAddress.setText("服务器地址不可达,请重新输入! "); serverAddress.setEditable(true);

课程设计

} output.flush(); //刷新数据流 ????

2、客户端接收线程类: 信息接收功能、响应服务器关闭消息 public void run()

{ } while(!socket.isClosed()) ///判断当前的连接状态 { } String type = (String)input.readObject(); //获取信息 if(type.equalsIgnoreCase("系统信息")) {?? //发送系统消息} else if(type.equalsIgnoreCase("服务关闭")) {??//关闭与服务器的连接} else if(type.equalsIgnoreCase("聊天信息")) {??//显示聊天信息} else if(type.equalsIgnoreCase("用户列表")) {??//改动用户列表中成员}

- 12 -

课程设计

四、调试分析

网络课程设计报告模板

网络课程设计报告模板

(图1)服务器端 (图2)客户端

网络课程设计报告模板

(图3)客户上线显示

网络课程设计报告模板

网络课程设计报告模板

网络课程设计报告模板

(图4)成员列表 (图5)说话者的心情 (图6)通话方式

网络课程设计报告模板

(图7)显示信息

- 13 -

课程设计

五、测试分析

上面的QQ聊天室是基于C/S结构的网络工具,运用SOCKET类和SERVERSOCKET类网络编程工具开发的简单聊天系统,分为服务器端和客户端。网上任何两台机器之间要进行SOCKET通信,只要将一台作为服务器,另一端做为客户端即可。实际应用中,作为服务器的计算机通常性能较好,服务器往往面临很多客户的连接访问。

SOCKET类用在客户端,用户通过构造一个SOCKET类来建立与服务器的连接。SOCKET连接可以是流连接,也可以是数据报连接,这取决于构造SOCKET类时使用的构造方法,但一般使用的流连接。流连接的优点是所有数据都能准确、有序地传送到接受方,缺点是速度慢。

而在服务器端创造一个SERVERSOCKET对象,通过执行ACCEPT方法监听客户连接,这将使线程处于等待状态。然后在客户端构造SOCKET类,与服务器的指定断口进行连接。服务器监听到连接请求后,就可在两者之间建立连接。连接建立之后就可取得相应的输入输出流进行通讯,一方的输出流发送的数据将被另一方的输入流读取。

该程序实现了简单的多用户聊天演示;用户名输入界面,用户输入身份后再进入聊天界面;在客户方显示成员列表,可以选择将信息发送给哪些用户;如何在服务器方对退出的用户进行处理,保证聊天发送的消息只发给在场的用户,这点客户方与服务器方配合编程,客户退出时给服务器方发消息;以及说话人当时是心情,语气等。

- 14 -

课程设计

六、课设心得

七、参考文献

- 15 -

相关推荐