《计算机网络》课程设计报告Word格式.docx

上传人:b****5 文档编号:15709895 上传时间:2022-11-15 格式:DOCX 页数:32 大小:219.02KB
下载 相关 举报
《计算机网络》课程设计报告Word格式.docx_第1页
第1页 / 共32页
《计算机网络》课程设计报告Word格式.docx_第2页
第2页 / 共32页
《计算机网络》课程设计报告Word格式.docx_第3页
第3页 / 共32页
《计算机网络》课程设计报告Word格式.docx_第4页
第4页 / 共32页
《计算机网络》课程设计报告Word格式.docx_第5页
第5页 / 共32页
点击查看更多>>
下载资源
资源描述

《计算机网络》课程设计报告Word格式.docx

《《计算机网络》课程设计报告Word格式.docx》由会员分享,可在线阅读,更多相关《《计算机网络》课程设计报告Word格式.docx(32页珍藏版)》请在冰豆网上搜索。

《计算机网络》课程设计报告Word格式.docx

1.4实验平台介绍………………………………………………………………3

第二部分课程设计过程

2.2课设软件需求分析…………………………………………………………4

2.2.1设计目的……………………………………………………………4

2.1可行性分析…………………………………………………………………4

2.2.2设计要求……………………………………………………………5

2.2.3功能要求……………………………………………………………5

2.2.4系统主要功能和主要功能描述……………………………………5

2.3概要设计……………………………………………………………………6

2.4源代码………………………………………………………………………8

2.4.1服务器………………………………………………………………8

2.4.2客户端………………………………………………………………13

2.5调试分析过程描述…………………………………………………………19

第三部分课程设计体会

课程设计心得体会…………………………………………………………………25

附录…………………………………………………………………………………26

1.1课程设计题目:

UDP聊天室软件开发

1.2成员分工:

xxx:

负责人员组织、撰稿排版

软件测试分析

负责本次课设概要分析

负责源代码的编写

负责课程设计准备部分

1.3课题背景及意义

当今世界正处于信息时代,计算机和通信网络是这一时代所谓“信息基础设施”。

在互联网相当普及的今天,在互联网上聊天对很多“网虫”来说已经是家常便饭了。

聊天室程序可以说是网上最简单的多点通信程序。

一个简单的聊天室,从程序员的观点来看就是在多个I/O端点之间实现多对多的通信。

基于SOCKET的局域网通信是一种灵活的、易于实现的、低成本的方法。

它可以运行在各种使用TCP/IP协议作为通讯协议的网络上。

而在SOCKETAPI的帮助下,开发基于SOCKET的局域网通信软件也是易于实现的。

1.4实验平台介绍

VisualC++(简称VC)是Microsoft公司推出的目前使用极为广泛的基于Windows平台的C++可视化开发环境。

VC基于C,C++语言,主要由是MFC组成,是与系统联系非常紧密的编程工具,它兼有高级,和低级语言的双重性,功能强大,灵活,执行效率高,几乎可说VC在 

Windows平台无所不能。

VC主要是针对Windows系统,适合一些系统级的开发,可以方便实现一些底层 

的调用。

在VC里边嵌入汇编语言很简单。

当对系统性能要求很高的时候,可用VC开发。

VC在多线程、网络通信、分布应用方面,有着不可比拟的优势。

2.1可行性分析

本课程设计主要解决在客户端于客户端的信息交换和客户端于服务器的信息交换及服务器的信息处理上的管理的课程设计。

此程序主要分为两部分:

服务器端和客户端。

服务器端用于提供一个网络端口,等待客户端发出请求,登录到此服务端,然后进行网络通讯和消息的转发;

客户端可通过服务器端的IP地址发送连接请求,然后登陆聊天室。

在服务器端的成员列表栏中会显示在线的所有人名单,有人退出聊天室,成员列表会自动除名。

服务器端同时也提供了成员之间的私聊功能,此时服务器端作为一个转发站,进行消息的转发。

整个程序的主体使用了CSocket类的方法,实现了网络通讯聊天。

先启动服务器端聊天程序,这是聊天服务器需要指定一个端口号,客户端则根据这个端口号以及服务器的网络地址与服务器进行通信。

在这里,把端口号成为“聊天频道”。

在后面的程序代码分析中将看到,端口号并不等同于聊天频道,而是在聊天频道上增加一个固定的偏移值,使得这个聊天频道不会和系统保留的端口发生冲突。

服务器启动后将在这个指定的端口号中等待客户的连接。

对于公共聊天室,服务器对客户的数目不做任何限制。

而对于私人聊天室,每个聊天频道则只能允许两个客户互相连接,使得一方发送的信息只能到达对方的主机中。

这里的服务器提供的是公共聊天服务。

通过分析发现,该程序完全可以通过VisualC++中MFC完成。

2.2课设软件需求分析

2.2.1设计目的

综合运用本课程及计算机网络的相关知识设计并实现一个网络应用程序,以VisualC++作为开发平台,通过实践复习巩固课堂所学的理论知识,提高对所学知识的综合应用能力。

2.2.2设计要求

采用客户/服务器模式,分为客户端程序和服务器端程序。

服务器采用WINSOCKI/O模型中的任一种,支持多个客户同时在线聊天。

客户端程序和服务器程序通过网络交换聊天字符串内容,服务器窗口的列表框中显示当前在线用户,支持客户端之间的私聊(可以通过服务器中转,或考虑UDP打洞直接建立端端连接)。

课程设计要求设计并编程完成两个方面的内容:

首先建立一个使用UDP协议的聊天室服务器,这个服务器可以同时支持多个用户的在线聊天;

其次设计一个可以和服务器通信的聊天室客户端。

2.2.3功能要求

✧支持多个客户端的连接,在服务器和多个客户端之间进行数据传输;

✧接收客户端发送的消息,并显示在一个列表框中;

✧在用户连接上后有提示,显示出连接的用户名字;

✧发送信息时可以显示聊天的所有记录;

2.2.4系统主要功能和主要功能描述

服务器端聊天程序必须能够做3件事情:

服务器聊天程序要在待定的端口上等待来自聊天客户的连接请求,并且需要维护一个客户连接表,以记录所有成功的连接。

服务器聊天程序要及时接受从各个聊天客户发送过来的信息,然后把这些信息转发到一个或多个客户连接。

对于公共聊天室,服务器将把接受到的信息向除源端外的所有客户发送过去。

服务器还要监控这些连接的状态,在客户主动离开或发生故障时从列表中删除相应的表项,并及时更新连接表。

这些要求可以通过CSocket类提供的功能实现。

从CSocket派生出两个类CListenSocket和CClientSocket,它们分别用来侦听客户的连接请求和建立与客户的连接。

服务器只需要一个侦听套接字CListenSocket,然后根据客户的连接请求动态创建客户套接字CClientSocket。

客户套接字的数量是不可预知的,因此需要一个列表来记录。

MFC的CPtrList类就能实现这种功能。

客户端聊天程序需要完成以下几个功能:

客户端聊天程序要负责建立和维护与服务器的连接,通过获取用户的设置尝试与服务器的连接,并且随时检测连接的状态。

客户端聊天程序要把用户输入的信息及时发送到聊天服务器。

一般情况下,当用户输入一行信息并且按下回车键后聊天程序就要把这一行信息发送出去,才能及时地满足用户的交互需求。

要随时准备好接受来自服务器的信息,随时把接受到的信息显示出来,让用户及时看到对方的响应。

在用户退出聊天过程是要关闭与服务器的连接。

比较好的做法是提前通知服务器或者直接给服务器发送一条退出通知,使得服务器能够及时掌握客户端的连接状态,把对方客户的退出信息及时发送到对等实体上。

客户端聊天程序需要使用一个通过CSocket类派生出来的CChatSocket类来实现。

该套接字用来发送一个与服务器的连接请求和维持与服务器的连接,发送和接收聊天信息,完成上述各项功能。

2.3概要设计

根据对用户的要求及功能设置可以得到以下的流程图2-1,用户首先启动客户端,登陆服务器并向服务器发送信息,启动服务器,服务器等待客户要求并向客户反馈在线用户信息,用户向服务器发送信息,服务器处理用户的数据,然后用户开始聊天。

客户端的聊天分为对所有人的信息和私聊的信息,该信息应通过程序控制分别进行处理。

图2-1设计流程图

一、

2.4源代码

2.4.1服务器:

//ServerDlg.cpp:

implementationfile

//

#include"

stdafx.h"

Server.h"

ServerDlg.h"

#ifdef_DEBUG

#definenewDEBUG_NEW

#undefTHIS_FILE

staticcharTHIS_FILE[]=__FILE__;

#endif

/////////////////////////////////////////////////////////////////////////////

//CAboutDlgdialogusedforAppAbout

classCAboutDlg:

publicCDialog

{

public:

CAboutDlg();

protected:

DECLARE_MESSAGE_MAP()

};

CAboutDlg:

:

CAboutDlg():

CDialog(CAboutDlg:

IDD)

}

voidCAboutDlg:

DoDataExchange(CDataExchange*pDX)

CDialog:

DoDataExchange(pDX);

BEGIN_MESSAGE_MAP(CAboutDlg,CDialog)

END_MESSAGE_MAP()

//CServerDlgdialog

CServerDlg:

CServerDlg(CWnd*pParent/*=NULL*/)

:

CDialog(CServerDlg:

IDD,pParent)

m_hIcon=AfxGetApp()->

LoadIcon(IDI_ICONAPP);

voidCServerDlg:

DDX_Control(pDX,IDC_LIST_USER,m_lbUser);

DDX_Text(pDX,IDC_EDIT_DISPLAY,m_strDisplay);

BEGIN_MESSAGE_MAP(CServerDlg,CDialog)

ON_WM_SYSCOMMAND()

ON_WM_PAINT()

ON_WM_QUERYDRAGICON()

ON_BN_CLICKED(IDC_BN_START,OnBnStart)

ON_BN_CLICKED(IDC_BN_CLOSE,OnBnClose)

ON_MESSAGE(WM_RECEIVE,OnReceive)

ON_MESSAGE(WM_CLIENTCLOSE,OnClientClose)

ON_MESSAGE(WM_ACCEPT,OnAccept)

ON_WM_DESTROY()

/////////////////////////////////////////////////////

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1