基于TCPIP协议的网络通信应用程序课程设计报告

上传人:ni****g 文档编号:529087742 上传时间:2023-12-19 格式:DOC 页数:30 大小:2.18MB
返回 下载 相关 举报
基于TCPIP协议的网络通信应用程序课程设计报告_第1页
第1页 / 共30页
基于TCPIP协议的网络通信应用程序课程设计报告_第2页
第2页 / 共30页
基于TCPIP协议的网络通信应用程序课程设计报告_第3页
第3页 / 共30页
基于TCPIP协议的网络通信应用程序课程设计报告_第4页
第4页 / 共30页
基于TCPIP协议的网络通信应用程序课程设计报告_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《基于TCPIP协议的网络通信应用程序课程设计报告》由会员分享,可在线阅读,更多相关《基于TCPIP协议的网络通信应用程序课程设计报告(30页珍藏版)》请在金锄头文库上搜索。

1、华南农业大学理学院( 计算机网络 )课程设计实验时间: 2010学年第二学期 专业年级: 2008级应数2班 实验题目: 基于TCP/IP协议的网络通信应用程序 学生姓名:王晓珊学号 _18_自评成绩_95教师评成绩_学生姓名:黄如萍_学号 06_自评成绩_95_教师评成绩_学生姓名_学号 _自评成绩_教师评成绩_学生姓名_学号 _自评成绩_教师评成绩_指导老师: 黄小虎 基于TCP/IP协议的网络通信小应用程序1. 课程设计的题目及要求1.1 课程设计题目掌握基于TCP/IP协议实现网络通信,理解TCP与UDP的不同特性以及实现方式。课程设计要求建立一个基于TCP/IP协议的网络通信小应用程

2、序,实验可采用UDP或TCP,建议基于WINDOWS平台。1.1.1 功能要求建立一个基于中心服务器方式即时数据通信平台(IM)。要求如下(*为选做内容): 1. 能进行用户管理,所有用户必须登录到服务器,由服务器维护在线信息。 2. IM(Instant Message)功能:用户登录后能进行实时多方点到点短信息通信,如聊天; 3. 能选择要求服务器进行转发服务; 4. 能保存通信记录到数据库(SQL Server或其他桌面型数据库); 5. 能进行双方文件传输,能显示进度; 6. 支持断点重传。(检查时需有功能随时中断传送,并在下次启动能显示重传状态); *7. 数据包加密;8.实时语音双

3、向传送功能;*9.多方通话功能;10.界面设计要求布局合理,信息清晰。1.1.2 对于所有功能的要求1) 要求清晰描述所设计的应答机制,数据包格式,所用数据结构及其相应算法,机密机制等;2) 对于功能实现要求描绘实现方法,流程。2. 开发工具、软硬件环境简介2.1 开发工具开发工具:Microsoft Visual Studio 20082.2 软硬件环境2.2.1 软件环境l 操作系统:Windows XP/Windows 7l 开发软件:Microsoft Visual Studio 2008l 开发语言:C#语言l 平台:Microsoft.NET Framework v2.02.2.2

4、 硬件环境l 分辨率:1000750l 服务器: PentiumIII 500以上或更高;内存:128M以上;硬盘:至少40G以上; l 工作站: PentiumII 266以上微机;内存:64MB硬盘: 至少5G以上; 3. 程序实现的基本思想3.1 程序设计分析本设计实现的基于TCP/IP协议的网络通信小应用程序,实际上是一个基于Socket的聊天室。聊天室主要由聊天室服务器和聊天室客户端组成。聊天室服务器负责管理和客户端连接并发送消息给客户端;聊天室客户端负责接收或者发送聊天消息,登录聊天室服务器等。一个聊天室服务器应该支持多个聊天室客户端进行同时连接。聊天室服务器和聊天室客户端之间根据

5、聊天协议进行通信。3.2 基本思想程序的实现主要分为两大部分,即服务器部分和客户端部分。程序首先设计聊天室的服务器,再设计客户端部分,最后生成可执行文件。1 服务器服务器端管理着聊天任务,它维持着一张当前在线用户的列表,转发用户发送来的消息。设计思想如下:3) 利用控件设计窗体;4) 功能实现; 监听本机IP地址中的一个指定的端口; 当有客户端向该端口发出请求时,服务器程序立刻建立一个与该客户端的连接并启动一个新的线程来处理该客户端; 根据客户端发送来的各种不同的请求,执行相应的操作,并将结果返回给客户端。5) 运行调试。2 客户端客户端应用程序包含用户登录窗口和用户聊天的主窗口,它允许用户登

6、录到服务器,可以向服务器发送消息,同时可以接收从服务器返回的信息。1) 设计登录窗体和聊天窗体;2) 基于课程设计的要求实现各窗体对应的功能; 向服务器发送连接请求; 得到服务器程序的确认后,建立与服务器的连接,并获得与服务器交互的流通道; 通过网络流通道与服务器端的程序进行数据通信。3) 运行调试。4. 系统功能框架图、系统流程图4.1 功能框架图图1 功能框架图4.2 系统流程图图2系统流程图5. 具体实现过程5.1 设计准备5.1.1 TCP的运用客户端只能和服务器通信,无法和另外一个客户端直接通信。为了使两个客户端能相互通信,所有的客户一律先把聊天信息发给服务器,并告诉服务器改信息是发

7、送给哪个客户的,服务器收到信息后,再将该信息转发给另外一个客户。本设计的实现主要用了TcpListener类用于用于侦听和接受传入的连接请求。基本方法:表1 TCP连接基本方法TcpListener类基本方法作用Start启动监听Stop关闭TcpListener并停止监听请求AcceptSocket在同步阻塞方式下获取并返回一个用来接收和发送数据的Socket对象,同时从传入的连接队列中移除该客户端的连接请求5.1.2 Socket套接字的运用本设计中自定义了通信程序的可识别命令(见以下第三小点),即自定义的简单协议。故程序中为支持自定义的协议,采用套接字来实现。根据连接启动的方式以及本地套

8、接字要连接的目标,套接字之间的连接过程可以分为服务器监听,客户端请求,连接确认三个步骤。n 服务器监听:服务器套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态。n 客户端请求:由客户端的套接字提出连接请求,要连接的目标是服务器的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器套接字的地址和端口号,然后再向服务器套接字提出连接请求。n 连接确认:当服务器套接字监听到客户端套接字的连接请求时,它就响应客户端套接字的请求,把服务器套接字的信息发给客户端,一旦客户端确认了此信息,连接即可建立。而服务器套接字继续监听其他客户端套接字的连接请求。服务器

9、和客户端必须分别进行编程,它们之间的连接如下图所示。 图3 服务器与客户端的连接图5.1.3 通信程序中可识别命令的定义程序中定义的可识别命令格式为两个一位整数拼接成的字符串,每位的含义如下: 第一位 第一位为0:客户机向服务器发送的命令 第一位为1:服务器向客户机发送的命令 01-离线 02-请求在线列表 可以识别的命令格式 03-请求对所有人闪屏振动第二位 服务端 04-请求对指定用户闪屏振动 05-请求广播消息 06-请求对指定用户发送文件要求转发给指定用户的用户名 :转发给指定用户 11-服务器要求客户机更新在线列表 客户端 12-服务器要求客户机做闪屏振动 default-接受用户消

10、息或者系统消息的正文6. 服务器具体设计6.1.1 窗体设计新建一个Windows窗体,命名为Form1.cs,主要用于连接服务器。只有建立了聊天室服务器,客户才能连接到上面,从而进行聊天。服务器建立之后,一般处于监听状态,等待客户机的连接申请。窗体用到的主要控件如下表所示。表2 主要控件控件类型控件名字用途按钮两个按钮,分别用于连接服务器和退出连接标签两个标签,一个为“端口号”,另一个为显示“默认端口号”文本框两个文本框,一个用于用户输入端口号,另一个用于显示服务器连接等系统消息图4 窗体设计图6.1.2 编码1) 创建服务器这部分程序的编写主要是实现“获得有效的端口号和IP地址”,设计要点

11、:l 自动获取IP地址IPAddress _ip = new System.Net.IPAddress(Dns.GetHostByName(Dns.GetHostName().AddressList0.Address);l 可以自主选择是否输入端口号端口号是进程的标识,端口号范围从0到65535。由于1000以内的端口大多被标准协议占用,所以程序中可以自由使用的端口号一般都用大于1000的值。若输入端口号,程序设置了有效端口号的范围为1023与65535之间。若端口有效则连接服务器,并提示相应的信息;默认端口号设置为8888若没有输入端口号,或者端口号无效,则程序自动使用默认端口号连接服务器。

12、代码如下:private void button1_Click(object sender, EventArgs e) this.button1.Enabled = false; string portParam; portParam = textBox_port.Text; if (portParam != string.Empty) if (!int.TryParse(portParam, out _port) | _port 65535) _port = 8888; textBox1 .AppendText (端口号不合法,默认端口号被接受!); textBox1 .AppendText

13、 (服务器已启动,正在监听.n); textBox1 .AppendText (string.Format(服务器IP:0t端口号:1n, _ip, _port); _tcpl =new TcpListener (_ip, _port); _tcpl.Start(); trd = new Thread(new ThreadStart(this.ThreadTask); trd.Start(); 2) 线程监听和执行由服务器和客户端的聊天室模型可以看出,服务器跟客户端的连接以及客户端之间的连接都是通过执行流实现的,即每一个独立的执行流都是一个线程。编写线程监听和线程执行体监听来自多个客户端的请求。l 线程监听在创建服务器代码中,可以看到若输入端口号有效,则执行TcpListener类侦听和接受传入的连接请求,并开启线程调用ThreadTask方法。ThreadTask方法要点:

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号