基于tcp ip的网络文字聊天程序设计

上传人:第*** 文档编号:56901169 上传时间:2018-10-17 格式:DOC 页数:21 大小:377.20KB
返回 下载 相关 举报
基于tcp ip的网络文字聊天程序设计_第1页
第1页 / 共21页
基于tcp ip的网络文字聊天程序设计_第2页
第2页 / 共21页
基于tcp ip的网络文字聊天程序设计_第3页
第3页 / 共21页
基于tcp ip的网络文字聊天程序设计_第4页
第4页 / 共21页
基于tcp ip的网络文字聊天程序设计_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《基于tcp ip的网络文字聊天程序设计》由会员分享,可在线阅读,更多相关《基于tcp ip的网络文字聊天程序设计(21页珍藏版)》请在金锄头文库上搜索。

1、网络编程课程设计说明书基于 TCP/IP 的网络文字 聊天程序设计专业:专业: 网络工程网络工程 班级:班级: 网络网络 1402 姓名:姓名: 谷子康谷子康 学号:学号: 1420140222 时间:时间: 2016.12.20 目录1. 系统需求分析.32. 总体设计.32.1. 服务器端功能.32.2. 客户端功能.43.1 服务端实现 43.1.1 服务端布局 53.2.2 函数设计步骤 63.2 客户端实现 83.2.1 客户端布局 83.2.2 设计步骤 .103.2.3 系统调试 .113. 附件:程序源码153.1. 服务端153.2. 客户端1801. 系统需求分析当前是数字

2、信息时代,网络时代,任何一种编辑工具都不能忽视在网络上的应用,并且随着 Internet 的普及和宽带技术的成熟,越来越多的用户进入网络世界中享用浏览新闻、查询信息、发送邮件、在线观看电影等服务,享受网络带来的便利和办公的高效,与此同时一个新型的 Web 应用程序为网民之间提供了一个实时通信的功能和场所,这就是聊天室。在网络早期就开始盛行,不论是 BBS,IRC 都有类似网上聊天室的机制。聊天室为网友提供了实时性对话的渠道,是网络上极为流行的一项服务。聊天室适用于网上会议或闲聊的一些场合。聊天室为网友提供了较好的交友环境,网友之间相互以文字交谈,在形式上有点类似笔友的性质,却大大节省了书信往返

3、的时间,这也是网上交友之所以如此热门的原因。2. 总体设计本课题是建立聊天通信模型,设计一个聊天室软件,包括服务器端和客户端主要功能为:2.1.服务器端功能初始化 socket,创建服务器端。维护一个链表,保存所有用户的 IP 地址、端口信息。接受用户传送来的聊天信息,并显示。接受用户传送来的连接判断命令,并向用户发出响应命令。12.2.客户端功能客户端界面上的两个文本框,一个用于显示接受的聊天信息,一个用来接受用户输入的聊天信息。当按下“发送”按钮时将信息发送给服务器。通过本课题,可以比较深入的了解和掌握 Socket 类基本属性、方法和事件,理解网络聊天通信的概念,输控制协议(TCP)进行

4、数据交流,初步掌握网络聊天通信程序的设计方法。并能巩固和扩展大学期间的学习内容,进行项目的设计开发训练,更好的适应社会的需求。 3.详细的设计3.1 服务端实现(3-1)23.1.1 服务端布局分三个区域:第一个是连接区域,需要输入本机的 IP 地址和监听的端口号相关设置信息;第二个是聊天信息显示区域,该窗口显示服务端开启监听以来发送和接收到的消息以及当前连接当服务器的客户端;第三个是消息编辑发送区域,需要输入你要发送的信息内容并发送。(单击启动服务按钮时的处理网络监听的函数。)代码设置如下:private void btnStart_Click(object sender, EventArg

5、s e)tryif (btnStart.Text = “启动服务“)SerSck = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);SerSck.Bind(new IPEndPoint(IPAddress.Parse(txtIP.Text), int.Parse(txtProt.Text);SerSck.Listen(1000);whileEnabled = true;SerTh = new Thread(Accept);SerTh.IsBackground = true;SerTh.St

6、art();AddMsg(“服务启动成功!“);btnStart.Text = “停止服务“;elseif (MessageBox.Show(“是否要停止服务?“, “提示:“, MessageBoxButtons.OKCancel) = DialogResult.OK)whileEnabled = false;if (SerTh.IsAlive)SerSck.Close();SerTh.Abort();AddMsg(“停止服务! “);btnStart.Text = “启动服务“;DicCliSck.Clear();lstCli.Items.Clear();3catch (Exception

7、 ex)AddMsg(ex.Message);DicCliSck.Clear();lstCli.Items.Clear();3.2.2 函数设计步骤相关文本框 txtIP.Text(保存 IP),txtProt.Text(保存端口)创建套接字 SerSck ,通过 ip 和端口进行初始化并开启监听服务开启成功后将成功信息打印在消息框中。(单击发送按钮时的消息发送函数。)代码设置如下:private void btnSend_Click(object sender, EventArgs e)if (lstCli.SelectedItem = null)MessageBox.Show(“请选择已连

8、接的客户端!“);elseif (DicCliScklstCli.SelectedItem + “ != null)DicCliScklstCli.SelectedItem + “.Send(Encoding.UTF8.GetBytes(txtSendMsg.Text);AddMsg(DicCliScklstCli.SelectedItem + “.LocalEndPoint.ToString() + “:“ + txtSendMsg.Text);txtSendMsg.Text = “;elseMessageBox.Show(“该客户端已失联!“);lstCli.Items.Remove(ls

9、tCli.SelectedItem);4通过当前已激活的套接字将文本框 txtSendMsg.Text 中的信息发送出去。要显示客户端接收到来自服务器其他用户的信息,代码设置如下:private void CliReceive(object obj)Socket CliSck = (Socket)obj;byte bts = new byte1024 * 1024;trywhile (whileEnabled)int length = CliSck.Receive(bts);if (length = 0)AddMsg(CliSck.RemoteEndPoint.ToString() + “:断

10、开连接“);DicCliSck.Remove(CliSck.RemoteEndPoint.ToString();lstCli.Items.Remove(CliSck.RemoteEndPoint.ToString();return;AddMsg(CliSck.RemoteEndPoint.ToString() + “:“ + Encoding.UTF8.GetString(bts, 0, length);catch (Exception ex)AddMsg(CliSck.RemoteEndPoint.ToString() + “:“ + ex.Message);DicCliSck.Remove

11、(CliSck.RemoteEndPoint.ToString();lstCli.Items.Remove(CliSck.RemoteEndPoint.ToString();从客户端套接字中获取到收到的字节数组,通过Encoding.UTF8.GetString 进行解码收到的信息,将其打印在消息框中。53.2 客户端实现和服务端一样,仍然建立一个 Windows 窗体应用程序工程,工程名为Socket_Client,按需要进行界面布局如图(3-2):(3-2)3.2.1 客户端布局主要分为三个区域:第一个是连接区域,需要输入服务端的 IP 地址和监听的端口号相关设置信息;第二个是聊天信息显示

12、区域,该窗口显示连接到服务端以来发送和接收到的消息;第三个是消息编辑发送区域,需要输入你要发送的信息内容并发送。(单击连接服务器按钮时的处理函数。)代码设置如下:private void btnStart_Click(object sender, EventArgs e)6if (btnStart.Text = “连接服务器“)tryCliSck = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);CliSck.Connect(new IPEndPoint(IPAddress.Parse(t

13、xtIP.Text), int.Parse(txtProt.Text);whileEnabled = true;CliTh = new Thread(Receive);CliTh.IsBackground = true;CliTh.Start();AddMsg(“服务连接成功!“);btnStart.Text = “断开连接“;catch (Exception ex)AddMsg(ex.Message);elseif (MessageBox.Show(“是否要断开连接?“, “提示:“, MessageBoxButtons.OKCancel) = DialogResult.OK)whileEn

14、abled = false;if (CliTh.IsAlive)CliSck.Close();CliTh.Abort();AddMsg(“断开连接!“);btnStart.Text = “连接服务器“;73.2.2 设计步骤相关文本框 txtIP.Text(保存 IP),txtProt.Text(保存端口)创建客户端套接字 CliSck ,通过 ip 和端口进行初始化并连接到服务器连接成功后将成功信息打印在信息框中。(单击发送按钮时的消息发送函数。)代码设置如下:private void btnSend_Click(object sender, EventArgs e)if (CliSck !

15、= null AddMsg(CliSck.LocalEndPoint.ToString() + “:“ + txtSendMsg.Text);txtSendMsg.Text = “;elseMessageBox.Show(“未连接到服务器!“);通过当前连接服务器的套接字将文本框 txtSendMsg.Text 中的信息发送出去。要显示客户端接收到来自服务器其他用户的信息,代码设置如下:private void Receive()byte bts = new byte1024 * 1024;trywhile (whileEnabled)int length = CliSck.Receive(b

16、ts);if (length = 0)AddMsg(CliSck.RemoteEndPoint.ToString() + “:断开连接“);return;AddMsg(CliSck.RemoteEndPoint.ToString() + “:“ + 8Encoding.UTF8.GetString(bts, 0, length);catch (Exception ex)AddMsg(ex.Message);从服务端套接字中获取到收到的字节数组,通过Encoding.UTF8.GetString 进行解码收到的信息,将其打印在消息框中。3.2.3 系统调试运行服务端并启动服务,图示(4-1):(4-1)9运行客户端,输入服务端 ip 和监听端口,点击连接服务器,图示(4-2) 、(4-3):(4-2)1

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

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