零点起飞学C#之P2P聊天工具.pptx_第1页
零点起飞学C#之P2P聊天工具.pptx_第2页
零点起飞学C#之P2P聊天工具.pptx_第3页
零点起飞学C#之P2P聊天工具.pptx_第4页
零点起飞学C#之P2P聊天工具.pptx_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第26章P2P聊天工具 P2P聊天工具是当前流行的点对点的聊天工具之一 它包括TCP连接 监听TCP 消息的发送和接收等模块 本章将给大家详细讲解使用VisualStudio2010集成开发环境开发P2P聊天工具的方法 该项目的名称为P2P聊天程序 26 1系统总体设计 在开发项目之前 我们要先对项目进行一个总体设计 主要包括系统功能设计 P2P聊天工具的组成设计等 本节我们来进行系统总体设计 26 1 1系统功能设计 P2P聊天工具是使用相同的项目 在不同的主机上运行 进行TCP连接 实现交互 具体描述如下所示 连接主机 连接到指定的主机 断开连接 断开已经连接的主机 退出聊天 退出聊天状态 并释放占有的资源 发送聊天消息 可以将消息发送到指定的主机 26 1 2P2P聊天工具组成 该P2P聊天工具项目的名称为P2P聊天程序 在VisualStudio2010的 解决方案资源管理器 面板中查看P2P聊天程序项目 P2P聊天程序项目包括多个应用程序 具体说明如下所示 LoginForm cs文件 TCP连接窗体 MainClass cs文件 实现连接代码 断开连接 发送消息 监听消息 MainForm cs文件 主机连接成功后的窗体 Program cs文件 应用程序执行的入口 ShowMessage cs文件 监听消息的输出窗体 ViewMessage cs文件 初始化线程实例 单独以一个线程来进行侦听 26 2P2P聊天工具类库实现 P2P聊天程序项目包含两个类文件 MainClass cs和ViewMessage cs 它们分别包含TCP连接 断开连接 发送消息和监听消息等功能实现的代码 本节将详细介绍这两个类的功能 26 2 1MainClass类 MainClass类被包含在P2P聊天程序命名空间中 并且特意引入了两个命名空间 System Net和System IO MainClass类定义了10个私有成员 如表示端口的port成员 监听的消息message等 MainClass类定义了两个属性 Message和IsConnected 它们分别表示侦听到的消息和表示是否连接到指定的主机 MainClass类定义了监听函数的委托及其事件 MessageListenedHandler和OnMessageListened 该委托的返回类型为void 且不包括任何参数 MainClass类定义了名称为 BeginListen 的方法 该方法实现监听功能 具体步骤如下 1 创建监听连接的实例tcpListener 并指定端口为port变量的值 2 调用Start 方法开始监听 3 接受远程计算机的连接请求 并获取接收数据的Socket实例socket 4 使用while循环开始监听远程计算机 5 创建保存从远程计算机接收到的数据的缓冲区buffer 6 调用Receive 方法接收数据 并保存到缓冲区buffer 7 读取buffer缓冲区中的消息 并保存为message变量 8 设置连接的状态 并调用OnMessageListened 方法 MainClass类定义了名称为Dispose 的方法 该方法首先停止监听 并停止监听的线程 最后关闭网络的连接 MainClass类定义了名称为ConnectRemoteServer stringserverName 的方法 该方法首先创建网络连接的实例tcpClient 然后连接指定的主机 并获取传送数据的数据流 MainClass类定义了名称为DisConnectRemoteServer 的方法 该方法关闭网络连接 MainClass类定义了名称为SendMessage stringmessage 的方法 该方法将指定消息发送写入到缓冲区 并写入到网络流中 等待发送 26 2 2ViewMessage类 ViewMessage类被包含在P2P聊天程序命名空间中 ViewMessage类定义了名称为ThreadListen 的方法 该方法创建一个新的线程 并启动该线程 26 3P2P聊天工具聊天窗口 P2P聊天工具由P2P聊天程序项目实现 该项目聊天窗口由MainForm cs窗体实现 用户通过LoginForm cs窗体连接目标主机 并和目标主机进行聊天 用户输入目标主机的IP地址 然后单击 连接 按钮可以连接指定的主机 连接成功后跳转到MainForm cs窗体 在MainForm cs窗体中单击 断开 按钮可以断开两个主机的连接 单击 退出 可以结束当前的聊天状态 单击 发送 按钮可以将消息发送给目标主机 LoginForm cs窗体的标题为 LoginForm 该窗体包括1个Label控件 1个TextBox控件 1个RichTextBox控件和一个按钮 运行P2P聊天程序之后 出现的第一个窗口就是LoginForm cs窗体 输入指定主机IP地址之后 连接成功 实现LoginForm cs窗体的具体步骤如下 1 LoginForm cs窗体包含在P2P聊天程序命名空间中 2 窗体数据初始化 窗体数据初始化主要实现3个功能 注册m实例的OnMessageListened事件和调用m实例的ThreadListen 方法启动监听功能 这3个功能由MainForm Load objectsender EventArgse 事件和m OnMessageListened 方法共同实现 3 实现连接功能 用户输入指定的IP地址 然后单击 连接 按钮 可以连接到指定的主机 该功能由button1控件的Click事件 button1 Click objectsender EventArgse 实现 具体步骤如下 获取TextBox控件中的内容 作为目标主机的IP地址 调用m实例的ConnectRemoteServer stringserverName 方法连接到本机的指定端口 如果连接成功 则 发送 按钮可见 如果连接失败 则在rtbMessage控件中显示 目标计算机拒绝连接请求 消息 MainForm cs窗体的标题为 MainForm 该窗体包括2个RichTextBox控件和4个Button控件 在LoginForm cs窗体将IP地址输入 连接成功后 会跳转到MainForm cs窗体 实现MainForm cs窗体的具体步骤如下所示 1 MainForm cs窗体所在的命名空间为P2P聊天程序 注意 MainForm类声明一个MainClass类的对象m 通过MainForm类的构造函数为其传值 2 实现断开连接功能 用户单击 断开 按钮 断开到指定的主机连接 该功能由button2控件的Click事件 button2 Click objectsender EventArgse 实现 该事件调用m实例的DisConnectRemoteServer 方法断开到指定主机的连接 3 实现退出功能 用户单击 退出 按钮可以退出聊天 该功能由button3控件的Click事件 button3 Click objectsender EventArgse 实现 该事件调用m实例的Dispose 方法退出聊天 并释放连接占用的资源 4 实现发送消息功能 用户单击 发送 按钮可以将输入的消息发送到目标主机 并显示在ViewMessage cs窗体 该功能由button4控件的Click事件 button4 Click objectsender EventArgse 实现 该事件首先获取用户输入的消息 然后调用m实例的SendMessage stringmessage 方法发送消息 如果发送消息成功 则在ViewMessage cs窗体中显示聊天消息 否则显示 无法发送消息到目标计算机 ShowMessage cs窗体用来显示接收的消息 它的标题为 ShowMessage 该窗体包括1个RichTextBox控件 26 4小结 本章主要介绍了P

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论