用VBNET编写基于CS模式.doc

  1. 1、本文档共29页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
用VB.NET编写基于C/S模式的 网络聊天室 作者:高景晖 (电气27班 目录 1.基础知识 1.1 如何使用Winsock? 1.1.1 UDP协议 1.1.2 TCP协议 1.2 VB.net的一些基础知识 1.3 关于控件数组 2.功能实现 3.设计思路 3.1 功能要求 3.2 思路概述 3.3 Winsock端口分配的分配策略 3.4 会话建立的流程及描述 3.5 客户离线的流程及描述 3.6 客户端发送消息的流程及描述 4.程序中重要函数的功能列表 4.1 服务器端主界面“form1“窗体下的程序 4.2 服务器端的“user_adm”窗体 4.3 客户端程序 5.实验总结 摘 要 本文主要目的是阐明用户的需求,程序的思路,和具体的程序编写过程。 程序采用TCP协议,完成了基于C/S/模式应用程序的编写。主要运用vb中一个封装的控件——Winsock进行服务器和客户端之间的通讯。其中,服务器采用了Winsock控件数组的方法,真正在服务器端实现了多线程,并且实现了服务器和客户端之间一对多的模式。 本文的第一部分介绍了Winsock,VB.NET,控件数组的一些基本知识,这有利于读者读懂程序中的内容;第二部分给出了程序运行的结果,使读者对程序的功能有感性的了解;第三部分分析了程序编写的思路,进一步让读者了解程序的内部机理;第四部分给出了源程序。 1.基础知识 1.1 如何使用Winsock? Winsock控件在通信时使用了两种传输层协议:UDP和TCP。 1.1.1 UDP协议 这种协议有一个最大的缺点,在于其无连接过程,也就无法进行用户身份的验证,考虑到网络的安全性和保密性,本项目不采用此协议。 1.1.2 TCP协议 TCP协议是一种面向连接的传输层协议。用TCP协议下的Winsock控件可以进行用户身份验证,具体怎样实施后面在讲,先介绍一下服务器-客户端模式中Winsock的工作原理。 (1) 客户端和服务器端各添加一个Winsock控件,将服务器端的Winsock置于侦听的状态listen(),随时侦听来自客户端的连接请求;在某一时刻客户端发出了尝试连接的请求connect()(如图1),转向第二步。 (2) 服务器收到客户端发出的尝试连接请求,于是在服务器端触发ConnectionRequest事件,此时先将服务器端的Winsock控件关闭,然后设置一下参数,再用Accept方法接收来自服务器端的请求,建立正式的连接。(如图2),如果客户端服务器端要发送数据到服务器端,转向第三步。 (3) 客户端用SendData方法发送需要发送的数据(如用户名,端口号,聊天信息等),这就会触发服务器里的DataArrival事件,如果在DataArrival事件的触发函数中加入GetData语句,就可以让服务器接收到客户端发送的数据 (如图3)。 (4) 同样的道理,服务器也可以通过触发客户端的DataArrival函数,向客 户端发送数据,同步骤三(如图4)。 1.2 VB.net的一些基础知识 (1) 本程序采用了模块化设计的方法,多采用函数和函数调用的方式,这就有必要介绍一下VB.net中的函数。 VB.net中函数过程的形式如下: [{Public/Protected/Friend/Private}] Sub 过程名 [参数(类型)] 过程的内容 Return 表达式(返回值) End Sub 当你想要编写一个很大的程序时,你可以先根据你的需求进行分析,分析出这些需求所对应的功能,然后把你想要实现的功能,按模块编写在若干个函数过程中时,你就可以在主程序中对这些函数进行调用。这样,你的函数就会看起来变得结构清晰,更有条理了。这也就是我们常说的“模块化的设计方法”。那函数已经写好,怎样对它进行调用呢? (2) VB.net中函数的调用 使用上面的Sub过程定义的函数一般有两种调用方式: ① 把过程名放在一个Call语句中(call 函数过程名); ② 直接把函数名作为一个语句来使用。 以上两种方法可以任选其一。 1.3 关于控件数组 数组为共享公用功能的一组控件一起工作提供了便捷的途径。例如,一组控件可能用于显示相关的数据,或者在被点击时提供相关的行为。Visual Basic.NET本身并不支持控件数组的建立,但是你可以通过编程复制控件数组的所有功能。控件数组的主要用处有: 使用相同的名称与索引访问一组控件,允许用编号检索和设置数据项并且在整个数组中重复。 多个对象使用同一个事件处理程序(event handler)处

文档评论(0)

天马行空 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档