基于TCPIP协议的网络通信应用程序课程设计报告.docx
- 文档编号:8533176
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:20
- 大小:900.01KB
基于TCPIP协议的网络通信应用程序课程设计报告.docx
《基于TCPIP协议的网络通信应用程序课程设计报告.docx》由会员分享,可在线阅读,更多相关《基于TCPIP协议的网络通信应用程序课程设计报告.docx(20页珍藏版)》请在冰豆网上搜索。
基于TCPIP协议的网络通信应用程序课程设计报告
华南农业大学理学院
(运算机网络)
课程设计
实验时刻:
2020学年第二学期
专业年级:
2020级应数2班
实验题目:
基于TCP/IP协议的网络通信应用程序
学生姓名:
王晓珊学号_18_自评成绩_95教师评成绩___
学生姓名:
黄如萍_学号06_自评成绩_95_教师评成绩___
学生姓名______学号____自评成绩____教师评成绩___
学生姓名______学号____自评成绩____教师评成绩___
*********
基于TCP/IP协议的网络通信小应用程序
课程设计的题目及要求
1.1课程设计题目
把握基于TCP/IP协议实现网络通信,明白得TCP与UDP的不同特性和实现方式。
课程设计要求成立一个基于TCP/IP协议的网络通信小应用程序,实验可采纳UDP或TCP,建议基于WINDOWS平台。
功能要求
成立一个基于中心效劳器方式即时数据通信平台(IM)。
要求如下(*为选做内容):
1.能进行用户治理,所有效户必需登录到效劳器,由效劳器保护在线信息。
2.IM(InstantMessage)功能:
用户登录后能进行实时多方点到点短信息通信,如谈天;
3.能选择要求效劳器进行转发效劳;
4.能保留通信记录到数据库(SQLServer或其他桌面型数据库);
5.能进行两边文件传输,能显示进度;
6.支持断点重传。
(检查时需有功能随时中断传送,并在下次启动能显示重传状态);
*7.数据包加密;
8.实时语音双向传送功能;
*9.多方通话功能;
10.界面设计要求布局合理,信息清楚。
关于所有功能的要求
1)要求清楚描述所设计的应答机制,数据包格式,所用数据结构及其相应算法,机密机制等;
2)关于功能实现要求刻画实现方式,流程。
开发工具、软硬件环境简介
1.2开发工具
开发工具:
MicrosoftVisualStudio2020
1.3软硬件环境
软件环境
●操作系统:
WindowsXP/Windows7
●开发软件:
MicrosoftVisualStudio2020
●开发语言:
C#语言
●平台:
Framework
硬件环境
●分辨率:
1000×750
●效劳器:
PentiumIII500以上或更高;
内存:
128M以上;
硬盘:
至少40G以上;
●工作站:
PentiumII266以上微机;
内存:
64MB
硬盘:
至少5G以上;
程序实现的大体思想
1.4程序设计分析
本设计实现的基于TCP/IP协议的网络通信小应用程序,事实上是一个基于Socket的谈天室。
谈天室要紧由谈天室效劳器和谈天室客户端组成。
谈天室效劳器负责治理和客户端连接并发送消息给客户端;谈天室客户端负责接收或发送谈天消息,登录谈天室效劳器等。
一个谈天室效劳器应该支持多个谈天室客户端进行同时连接。
谈天室效劳器和谈天室客户端之间依照谈天协议进行通信。
1.5大体思想
程序的实现要紧分为两大部份,即效劳器部份和客户端部份。
程序第一设计谈天室的效劳器,再设计客户端部份,最后生成可执行文件。
1.效劳器
效劳器端治理着谈天任务,它维持着一张当前在线用户的列表,转发用户发送来的消息。
设计思想如下:
3)利用控件设计窗体;
4)功能实现;
Ø监听本机IP地址中的一个指定的端口;
Ø当有客户端向该端口发出请求时,效劳器程序立刻成立一个与该客户端的连接并启动一个新的线程来处置该客户端;
Ø依照客户端发送来的各类不同的请求,执行相应的操作,并将结果返回给客户端。
5)运行调试。
2.客户端
客户端应用程序包括用户登录窗口和用户谈天的主窗口,它许诺用户登录到效劳器,能够向效劳器发送消息,同时能够接收从效劳器返回的信息。
1)设计登录窗体和谈天窗体;
2)基于课程设计的要求实现各窗体对应的功能;
Ø向效劳器发送连接请求;
Ø取得效劳器程序的确认后,成立与效劳器的连接,并取得与效劳器交互的流通道;
Ø通过网络流通道与效劳器端的程序进行数据通信。
3)运行调试。
系统功能框架图、系统流程图
1.6功能框架图
图1功能框架图
1.7系统流程图
图2系统流程图
具体实现进程
1.8设计预备
TCP的运用
客户端只能和效劳器通信,无法和另外一个客户端直接通信。
为了使两个客户端能彼此通信,所有的客户一概先把谈天信息发给效劳器,并告知效劳器改信息是发送给哪个客户的,效劳器收到信息后,再将该信息转发给另外一个客户。
本设计的实现要紧用了TcpListener类用于用于侦听和同意传入的连接请求。
大体方式:
表1TCP连接大体方式
TcpListener类基本方法
作用
Start
启动监听
Stop
关闭TcpListener并停止监听请求
AcceptSocket
在同步阻塞方式下获取并返回一个用来接收和发送数据的Socket对象,同时从传入的连接队列中移除该客户端的连接请求
Socket套接字的运用
本设计中自概念了通信程序的可识别命令(见以下第三小点),即自概念的简单协议。
故程序中为支持自概念的协议,采纳套接字来实现。
依照连接启动的方式和本地套接字要连接的目标,套接字之间的连接进程能够分为效劳器监听,客户端请求,连接确认三个步骤。
⏹效劳器监听:
效劳器套接字并非定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态。
⏹客户端请求:
由客户端的套接字提出连接请求,要连接的目标是效劳器的套接字。
为此,客户端的套接字必需第一描述它要连接的效劳器的套接字,指出效劳器套接字的地址和端口号,然后再向效劳器套接字提出连接请求。
⏹连接确认:
当效劳器套接字监听到客户端套接字的连接请求时,它就响应客户端套接字的请求,把效劳器套接字的信息发给客户端,一旦客户端确认了此信息,连接即可成立。
而效劳器套接字继续监听其他客户端套接字的连接请求。
效劳器和客户端必需别离进行编程,它们之间的连接如以下图所示。
图3效劳器与客户端的连接图
通信程序中可识别命令的概念
程序中概念的可识别命令格式为两个一名整数拼接成的字符串,每位的含义如下:
第一名第一名为0:
客户机向效劳器发送的命令
第一名为1:
效劳器向客户机发送的命令
"01"-离线
"02"-请求在线列表
能够识别的命令格式"03"-请求对所有人闪屏振动
效劳端"04"-请求对指定用户闪屏振动"05"-请求广播消息
"06"-请求对指定用户发送文件
要求转发给指定用户的用户名:
转发给指定用户
"11"-效劳器要求客户机更新在线列表
客户端"12"-效劳器要求客户机做闪屏振动
default-同意用户消息或系统消息的正文
效劳器具体设计
窗体设计
新建一个Windows窗体,命名为,要紧用于连接效劳器。
只有成立了谈天室效劳器,客户才能连接到上面,从而进行谈天。
效劳器成立以后,一样处于监听状态,等待客户机的连接申请。
窗体用到的要紧控件如下表所示。
表2要紧控件
控件类型
控件名字
用途
按钮
两个按钮,分别用于连接服务器和退出连接
标签
两个标签,一个为“端口号”,另一个为显示“默认端口号”
文本框
两个文本框,一个用于用户输入端口号,另一个用于显示服务器连接等系统消息
图4窗体设计图
编码
1)创建效劳器
这部份程序的编写主若是实现“取得有效的端口号和IP地址”,设计要点:
●自动获取IP地址
●IPAddress_ip=new能够自主选择是不是输入端口号
端口号是进程的标识,端口号范围从0到65535。
由于1000之内的端口大多被标准协议占用,因此程序中能够自由利用的端口号一样都用大于1000的值。
假设输入端口号,程序设置了有效端口号的范围为1023与65535之间。
假设端口有效那么连接效劳器,并提示相应的信息;
默许端口号设置为8888
假设没有输入端口号,或端口号无效,那么程序自动利用默许端口号连接效劳器。
代码如下:
privatevoidbutton1_Click(objectsender,EventArgse)
{=false;
stringportParam;
portParam=;
if(portParam!
=
{if(!
(portParam,out_port)||_port<1023||_port>65535)
{
_port=8888;
textBox1.AppendText("端口号不合法,默许端口号被同意!
");
}}
textBox1.AppendText("效劳器已启动,正在监听...\n");
textBox1.AppendText("效劳器IP:
{0}\t端口号:
{1}\n",_ip,_port));
_tcpl=newTcpListener(_ip,_port);
();
trd=newThread(newThreadStart);
();
}
2)线程监听和执行
由效劳器和客户端的谈天室模型能够看出,效劳器跟客户端的连接和客户端之间的连接都是通过执行流实现的,即每一个独立的执行流都是一个线程。
编写线程监听和线程执行体监听来自多个客户端的请求。
●线程监听
在创建效劳器代码中,能够看到假设输入端口号有效,那么执行TcpListener类侦听和同意传入的连接请求,并开启线程挪用ThreadTask方式。
ThreadTask方式要点:
1)Socket套接字同意连接方式;
2)验证用户名是不是唯一,假设当前哈希表没有该用户许诺连接,不然连接失败;
3)挪用线程执行体;
4)向所有效户发送系统消息,AppendText方式在文本框中追加入系统消息,并用foreach循环将系统消息传给各个客户端。
●线程执行体
线程执行体要紧用于客户端和效劳器转发消息。
线程执行体事实上也是谈天室中效劳器端的谈天依据,即咱们自概念的协议解析。
这部份的程序流程如以下图。
图5客户端程序流程图
5)退出连接
编程要点:
(1)TCP停止监听;
(2)清除在线列表。
代码如下:
privatevoidbutton2_Click(objectsender,EventArgse)
{if(_tcpl!
=null)
{
();}
xt,输入保留的文件名,就会将当前接收信息文本框的所有内容以文本文件保留。
privatevoidsave_btn_Click(objectsender,EventArgse)
{
DialogResultret;
SaveFileDialogsfd=newSaveFileDialog();
="文本文件(*.txt)|*.txt";
=true;
if((ret=())==
{
;
}
}
1)清除谈天记录
点击清除谈天记录的按钮后,显现提示信息“确实排除吗?
排除后不可恢复。
”选择确信那么挪用clear()方式将当前的接收信息框的内容全数清空。
图8清除谈天记录提示窗口
1.文件传输
●选择文件
点击“选择文件”,进入打开文件对话框,依照文件类型挑选文件,找到要发送的文件,点击确信后,读取所选文件所在途径名。
●发送文件
这一功能只能在“悄悄话”中实现,在“谈天室”模式下会提示“不能在谈天室发送文件”,还需要选择一个接收方,不然会提示“请选择一个接收者!
\n若是没有同意者可选,说明当前只有您一个人在线”。
若是文件途径名为空,那么提示“请选择文件传输途径”,不然,依照途径名为指定的途径名初始化StreamReader的一个新实例sr,读取文件内容,关闭sr,并释放与读取器相关的所有系统资源,并启动操纵发送进度条的按时器。
●保留文件
点击接收文件,弹出保留文件对话框,选择文件保留途径;为指定途径的指定文件初始化StreamWriter新实例,利用(Stringvalue)方式将后跟行终止符的字符串写入文本流,同时启动操纵进度条的按时器。
2.数据加密
这部份采纳RSA算法来实现。
先初始化RSA对象,再利用RSA算法进行解密和加密。
下表是RSA算法应用方式的说明。
表5算法应用方式的说明
名称
说明
Encrypt方法
使用RSA算法对数据进行加密。
该方法有两个参数,第一个参数是被加密的字节数组,第二个参数是填充方式(true表示使用OAEP方式填充,false表示使用PKCS#版填充),如果操作系统是WindowsXP及其以上版本,可以使用true,如果是Windows2000及其以上版本,使用false
Descrypt方法
使用RSA算法对数据进行加密。
其它内容与上相同。
具体代码实现如下:
[2]马俊.C#网络应用编程(第二版).北京:
人民邮电出版社.
[3]谭桂华,魏亮.VisualC#高级编程范例.北京:
清华大学出版社.
[4]吴晨,陈建孝.C#网络与通信程序设计案例精讲.北京:
清华大学出版社.
[5]刘瑞新.C#网络编程及应用.北京:
机械工业出版社.
课程设计评分表
教师评阅:
□设计目的明确; □操作步骤正确;
□设计文稿(表格、程序、数据库、网页)符合要求;
□设计结果正确; □设计分析总结全面; □设计报告规范;
课程设计答辩情况记录:
□思路清晰;语言表达准确,概念清楚。
□准备工作充分,具备必要的报告资料;报告在规定的时间内完成。
□回答问题有理论依据,基本概念清楚。
主要问题回答简明准确;
□对前人工作有改进或突破,或有独特见解。
评阅教师签名:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 TCPIP 协议 网络 通信 应用程序 课程设计 报告