1、计算机科学与技术学院20082009 学年第 2 学期计算机网络课程设计题目: 基于 TCP 的网络聊天程序 班级: 060341A 学号: 060341101 姓名: 柏榴基 教师: 成绩: 目 录1 需求分析 11.1 课程设计目的 11.2 课程设计内容 11.3 课程设计要求 12 概要设计 22.1 原理概述 22.2 运行环境 32.3 基本设计思路 32.4 功能模块设计 43 详细设计 53.1 程序流程 53.2 主要算法 63.3 主要数据结构 73.4 主要函数说明 84 用户使用手册 95 项目分析与总结 115.1 项目分析 11(实现过程中遇到的问题及解决办法;系统
2、运行结果分析:要求用 Sniffer分析出网络通信采用的运输层协议、IP 地址、端口号等信息)5.2 总结与建议 12附录 A 源程序代码文件说明 13(每个源程序代码文件用一句话说明即可)附录 B 参考文献 .141 需求分析1.1 课程设计目的:熟悉网络编程基本原理1.2 课程设计内容:使用 C#语言编写网络聊天工具2 概要设计2.1 原理概述:这是一个基于 TCP 的聊天工具,需要在两台机子上装有该聊天工具,通 过连接、监听、数据发送和接收,最终完成该聊天功能的实现。2.2 运行环境:WINDOWS 平台2.3 基本设计思路:首先需要创建套接字用于网络间的传送与接收,然后通过主线程建立接
3、受线程,以实现接收数据的功能,创建套接字需要先初始化,创建,与绑定 三个步骤,之后将主线程创建的套接字的变量进行转换,转换到接受线程当 中。然后在成功接受数据后通过:PostMessage(hwnd,WM_RECVDATA,0,(LPARAM)private void MainForm_Load(object sender, System.EventArgs e)this.Listener = new Thread(new ThreadStart(StartListen);this.Listener.Start();private void MainForm_Closed(object sen
4、der, System.EventArgs e)if ( this.Listener != null )this.Listener.Abort();if ( this.TcpListener != null )this.TcpListener.Stop();3.2 监听函数(含接受功能)private void StartListen()this.TcpListener = new TcpListener(19808);this.TcpListener.Start();while( true )TcpClient TcpClient = this.TcpListener.AcceptTcpCl
5、ient();NetworkStream MyStream = TcpClient.GetStream();byte bytes = new byte2048;int bytesRead = MyStream.Read(bytes,0,bytes.Length);string message = System.Text.Encoding.UTF8.GetString(bytes,0,bytesRead);Closesocket()Recv() Recv()Send()this.richTextBox2.Text += message + “n“;3.3 发送函数(含连接功能)private v
6、oid send()if (this.IP.Text.Length 7 )MessageBox.Show(“IP 地址错误!“,“错误信息:“,MessageBoxButtons.OK,MessageBoxIcon.Information);return;if ( this.richTextBox1.Text.Length 1 )return;trystring Message = this.NickName.Text + “:“ + this.richTextBox1.Text;TcpClient TcpClient = new TcpClient(this.IP.Text,19808);N
7、etworkStream tcpStream = TcpClient.GetStream();StreamWriter stream = new StreamWriter(tcpStream);stream.Flush();stream.Write(Message);stream.Close();TcpClient.Close();this.richTextBox2.AppendText( Message + “n“);catch ( Exception Err)MessageBox.Show(Err.Message,“错误信息:“,MessageBoxButtons.OK,MessageBo
8、xIcon.Information);finallysends.Abort();4 用户使用手册首先将程序装于两台计算机中并运行,填写对方 IP 地址,输入聊天内容, 点击发送,对方即可收到你发送的内容。并可增加对方为好友,此时就不再 显示对方的 IP 号,而是好友的名称。这些信息将保存在 friendlist.ini 文件中。5 总结与建议:这个聊天程序的实现很复杂,通过大量的阅读材料以及请教周边的同学才了解了几个主要算法的实现。但最重要的是一些网络的基本概念的了解, 比如说套接字,线程的创建与运行,一些协议的基本概念。只有了解懂得运 用到这些知识,才是这次网络编程作业的最终目的。通过不断的调试,最终 完成这个小工具,也实现了老师的基本要求,希望在以后的学习中得到老师 的进一步指导,完善自己的网络知识。6 附录参考文献 计算机网络 谢希仁著