UDP局域网QQ聊天程序设计说明.docVIP

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
UDP局域网QQ聊天程序设计说明

毕业设计(论文)报告用纸 第  PAGE 15 页 共 11页 3.2 类库的设计 在本局域网聊天软件中,因为在后台服务器端的用户信息管理平台以及前台的客户端的登录窗口、主界面窗口以及聊天窗口都需要用到UDP协议。所以本程序中,将UDP协议封装成了一个控件,主要是为了便于客户端和服务器端的调用,并且将UDP控件和自定义类存储在了Controls文件夹中。当需要使用到UDP协议的时候,只需要在相应的窗口中加入SockUDP控件,然后设置SockUDP控件的相关的属性即可。下面对Controls中的SockUDP控件和其他的类分别进行说明。 (1)SockUDP控件 该控件主要是将UDP协议中的IP地址和端口号以及开启或者关闭的状态以控件的形式进行设置,并自定义一个了DataArrival事件,用于对主机的端口号进行监听,以获取远程计算机发送过来的消息。 在自定义控件上制作了System.Net.IPEndPoint 类的server属性,来获得对方IP地址和端口号信息 UDPSocket控件中包含CloseSocket()方法分别用于关闭UDP协议端口的监听功能,并在监听关闭的同时关闭用于接收信息的子线程。 Listener()方法用于实现主机端口号的监听功能,主要是将IP地址和端口号以网络端点进行存储,然后创建一个新的端口号,再设置接收缓冲区和发送缓冲区的大小。此外,还创建了一个线程,主要是用于获取当前接收到的信息,就是将获取的远程信息转换成二进制流。在线程打开时,将GetUDPData()方法所接收的信息传递给线程的委托。 GetUDPData()方法是在获取远程消息时,将消息转发给UDPSocket控件的DataArrival事件,可以通过该事件将消息发送给远程客户端。 Send()方法用于将主机获取的消息,通过IP地址和端口号发送给远程客户端。 Dispose()函数用以清理正在使用的资源 通过以上的方法,便制作完成了一个SockUDP控件。 (2)Publec_Class类 该类用于记录服务器端和客户端的基本信息,并通过自定义的方法MyHostIP()获取服务器端的所有IP地址,通过自定义方法Get_Windows()获取Windows目录。 (3)ClassForms类 该类将获取的的窗体在InnerList列表中进行添加和移除操作,在列表中查找相应的窗体。 (4)ClassMsg类 该类主要是用枚举型的元素指定消息发送的命令、消息类型、消息发送的状态等。其中,发送的消息命令包括了用户登录、用户登录结束上线、用户列表、打开语音、关闭语音、下线等命令;发送的消息类型包括了无类型、发送命令、发送消息、发送文件等。此外,该类还用来记录发送方和接收方的发送编号、IP地址以及端口号等信息,还记录了用户注册的用户名和密码等信息。 (6)ClassSerializers 类 ① SerializeBinary()方法 该方法是在客户端发送信息时,将发送的对象序列化为二进制流,并返回序列化的二进制流,因为Socket只能以二进制流的形式进行传输。 ② DeSerializeBinary()方法 该方法是在客户端接收信息时,将二进制流反序列化为对象,并返回反序列化后的对象,这样,便于在指定的控件上显示接收的信息。 (7)ClassUserInfo类 该类用于记录当前用户的编号、IP地址、端口号、用户名称和用户状态。 (8)ClassUsers 类 该类主要是将服务器端所有注册的用户信息存储到base类的InnerList列表中。这样,当用户注册或登陆时,可以将该列表中的信息发给当前在线的所有用户,以改变主窗体的显示情况。 ClassTextMsg类 该类主要是用枚举型的元素指定发送文本的字体、颜色、内容等。 4.2.2客户端登陆模块技术分析 在UDP协议的监听事件中通过开启一个线程,来实现局域网信息的发送和接收。要想创建一个子线程,需要实例化一个Thread类型的对象。子线程创建完后,可以使用线程的Start()方法开启当前线程。当子线程使用完之后,可以使用Thread对象的Sleep(0)方法将主线程睡眠,然后调用线程的trd.Abort()方法终止当前线程。 4.2.3客户端登陆模块实现过程 (1)新建一个Windows窗体,命名为FormLogon.cs。该窗体主要实现客户端的登陆功能。 (3)在登陆窗体加载时,获取服务器IP和端口号,再根据该IP地址和端口号与服务器建立通信,把用户的信息发送给服务器进行记录。 (4)在自定义控件SocUDP的DataArrival事件中,利用托管调用DataArrival事件,并在该控件的线程上,用指定的参数对其进行异步托管。 (5)托管对DataArrival

文档评论(0)

185****7617 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档