【VB开源代码栏目提醒】:网学会员,鉴于大家对VB开源代码十分关注,论文会员在此为大家搜集整理了“基于TCP协议的VB聊天程序 - 产品手册”一文,供大家参考学习!
课程设计学生姓名学 号院 系专 业指导教师 2012 年 9 月 15 号 摘 要 在任务一中,利用 Visual Basic 语言中的 WinSock 控件设计一个基于 TCP协议的通讯程序。
整个程序包括服务器和客户端两个部分。
要实现多台计算机连接情况下的接收、发送字符串,就是指多台客户端连接到同一个服务器,以服务器为中端来进行通讯。
当你运行服务器,然后在其它电脑上运行客户端,输入服务器主机的 IP,连接到服务器,客户端与客户端之间即可实现简易的通讯功能。
在任务二中,利用 Visual Basic 语言设计一个简易计算器。
整个系统都是在响应鼠标的 Click 事件来实现的。
即在设计的界面上输入你要进行计算数据和运算符号,就可以得到正确的运算结果。
关键词:winsock,TCP 协议,计算器,Visual Basic Abstract In task one using Visual Basic language in WinSock control to design a protocolbased on the TCP communication procedures. The whole procedure including theserver and client in two parts. In order to realize the multiple computers connected incase of receiving sending the string refers to multiple client connected to a server toserver for in the end to communicate. When you run the server and then in the othercomputer running the client server host IP connect to the server between the clientand the client can realize simple communication function. In the second task using Visual Basic language to design a simple calculator. Thewhole system is in the response of mouse Click events to achieve. In the design of theinterface input you want to calculate data and operation symbol can get the rightresult.Key
words: Winsock TCP protocol calculator Visual Basic 目录前 言.......................................................................................................................... 1第一章 概述.................................................................................................................. 1 1.1 课程设计的课题.............................................................................................. 1 1.2 课程设计工作进程.......................................................................................... 1 1.3 设计要求.......................................................................................................... 1第二章 任务一.............................................................................................................. 2 2.1
Vb Winsock 控件及 TCP 协议介绍 ............................................................... 2 2.3.1 TCP 通信协议的基础 .......................................................................... 3 2.3.2 客户端与服务器的实现过程.............................................................. 4 2.3.3 程序的编写........................................................................................... 6 2.3.4 生成可执行文件................................................................................... 9 2.4 结果测试.......................................................................................................... 9 2.5 遇到的问题及解决方案............................................................................... 11 2.5.1 遇到的问题........................................................................................ 11 2.5.2 解决方案............................................................................................ 11第三章 任务二............................................................................................................ 12 3.1 设计思想....................................................................................................... 12 3.2 程序设计步骤............................................................................................... 12 3.2.1 界面设置............................................................................................ 12 3.2.2 生成可执行文件................................................................................ 14 3.3 结果测试....................................................................................................... 14 3.4 遇到的
问题及解决方案............................................................................... 17 3.4.1 遇到的问题........................................................................................ 17 3.4.2 解决
方案............................................................................................ 17第四章 总结与展望.................................................................................................... 18参考文献...................................................................................................................... 18致谢.............................................................................................................................. 19 前 言 Visual Basic(
VB)是一种由微软公司开发的包含协助开发环境的事件驱动编程语言。
从任何标准来说,
VB 都是世界上使用人数最多的语言——不仅是盛赞
VB 的开发者还是抱怨
VB 的开发者的数量。
它源自于 BASIC 编程语言。
VB拥有图形用户界面(GUI)和快速应用程序开发(RAD)系统,可以轻易的使用DAO、RDO、ADO 连接数据库,或者轻松的创建 ActiveX 控件。
程序员可以轻松的使用
VB 提供的组件快速建立一个应用程序。
随着计算机技术和通讯技术的发展计算机网络已渗透到各个应用领域其中最突出的便是以 TCP/ IP 协议为核心的 Internet 网络发展最为迅速。
因此计算机应用程序的开发也由传统单机处理模式转向以多机通信为主的网络应用开发。
Microsoft 面向对象的程序开发工具 VisualBasic 提供了基于 Windows Sockets
网络编程接口的 Winsock 控件利用该控件程序员可以更方便、快捷的开发基于 TCP/ IP 的应用程序。
其使用方法也大同小异在此我们将着重介绍 Winsock 控件在 Visual Baisc6.0 中的使用方法。
要编写简单的客户端应用或服务器应用
程序不必详细了解TCP/ IP 协议的细节和调用底层的 Winsock API。
只需简单的设置好相应 Winsock控件的属性调用其特定的方法就可编写出方便连接到一台远程机器、并进行双向
通信和数据交换的程序。
第一章 概述1.1
课程设计的课题 1、利用 WinSock 控件编写基于 TCP 协议的应用程序,要求如下: a、使用 TCP 协议,包含服务器和客户端 b、可以实现多台计算机连接情况下的接收、发送字符串 c、处于连接的多台
计算机窗口显示相关的字符串 2、制作一个简单计算器的程序,其功能与普通计算器相差不大,可以进行四则运算,当按下“清除”按钮时,上方显示区数字清变为“0”,准备进行下次运算。
(如下图)1.2 课程设计
工作进程 2012.9.10-2012.9.10 查阅资料 构思
设计方案 2012.9.11-2012.9.12 单元功能模块设计、计算、绘图 2012.9.13-2012.9.14 总体
系统流程图和电路原理图设计、绘图 2012.9.15 编写设计说明书1.3 设计要求 1、按计划要求开展设计工作,分析设计过程中所出现的技术难题,并能提出解决方案。
严格遵守纪律,保质保量完成规定的设计任务。
2、查阅文献不少于 10 篇。
3、课程设计字数要求在 8000 字以上,要求设计(论文)内容完整、准确,层次分明,数据可靠,文字简练,分析透彻,推理严谨,立论正确。
第二章 任务一2.1
Vb Winsock 控件及 TCP 协议介绍 Winsock 是 Mcrosoft windows 提供的网络编程接口,它提供了基于 TCP/IP协议接口实现方法。
通过网络进行的数据通信,需要用地址来表示网络中的主机。
TCP/IP 协议使用 IP 地址来作为主机的标识。
实现的连接方式是通过 IP 地址来识别的。
通常情况下每台设备运行的不止一个程序,所以为了使用应用程序间的连接, 在 还需要建立一个地址标识。
TCP/IP 中使用端口来作为标识号PORT,IP 地址端口地址。
TCP:实现提供双向,有序无从复的数据流服务,流量控制差错检测纠错等功能。
2.2 Visual Basic Winsock 控件的导入 在打开 Visual Basic
软件时,在工具箱中并没有 Winsock 控件,要使用它,首先要将这个控件引用进来。
方法如下: 在
VB 里点击菜单【工程】—【部件】 在弹出的部件窗体里找到“Microsoft Winsock Control 6.0SP6”,选中,再点【确定】,然后 Winsock 控件就添加到
vb 左侧的工具栏里了。
选择完成后这时在 Visual Basic 的编辑画面左这的工具箱中会多一个控件,这就是 Winsock 控件,现在就可以开始使用它进行设计编程。
选择完成后这时在 Visual Basic 的编辑画面左这的工具箱中会多一个控件,这就是 Winsock 控件,就可以直接放到窗口进行使用。
2.3 程序设计步骤2.3.1 TCP 通信协议的基础 TCP 数据传输协议允许创建和维护与远程计算机的连接。
连接两台计算机就可彼此进行数据传输。
如 果 创 建 客 户 应 用 程 序 , 就 必 须 知 道 服 务 器 计 算 机 名 或 者 IP 地 址(RemoteHost 属性) ,还要知道进行“侦听”的端口(RemotePort 属性) ,然后调用 Connect 方法。
如果创建服务器应用程序,就应设置一个收听端口(LocalPort 属性)并调用 Listen 方法。
当客户计算机需要连接时就会发生 ConnectionRequest 事件。
为了完成连接,可调用 ConnectionRequest 事件内的 Accept 方法。
建立连接后,任何一方计算机都可以收发数据。
为了发送数据,可调用SendData 方法。
当接收数据时会发生 DataArrival 事件。
调用 DataArrival 事件内的 GetData 方法就可获取数据。
通讯协议的选择是通过设置 WinSock 的 Protocol 属性来实现的。
2.3.2 客户端与服务器的实现过程 服务器端: a、读取服务器的 IP 地址 textserverIP.Text Winsock1.LocalIP b、设置服务器本地端口 Winsock10.LocalPort 10001 c、监听客户端的连接请求 Winsock10.Listen d、当有连接到达时,接受请求 在事件 Winsock1_ConnectionRequest 中编写如下
代码: Winsock1Socknumber.Accept requested e、发送与接收数据 在事件 Winsock1_DataArrival 中编写如下
代码: Winsock1Index.GetData c ‘获取数据 Winsock1i.SendData c ‘发送数据 f、关闭连接 Winsock1.Close 其流程图如下: 开始 SendData GetData 远程主机 IP 与端 口设置 断开连接? Connect Close NO Error YES 结束 客户端: a、设置远程服务器主机端口 Winsock1.RemotePort 10001 b、设置远程服务器主机 IP 地址 Winsock1.RemoteHost TrimtextserverIP.Text 在文本框 textserverIP 中输入服务器的 IP 地址。
c、与服务器主机连接,发生错误则关闭 Winsock1.Connect d、发送与接收数据 在事件 Winsock1_DataArrival 中编写如下
代码, Winsock1.SendData textsend.Text ‘要发送的话在文本框 textsend 中输入 Winsock1.GetData c ‘接收数据,将接收到的数据存放在变量 c 中 e、关闭连接 Winsock1.Close 开始其流程图如下所示: 本地端口设置 Listen YES Error NO GetData SendData Close 结束2.3.3 程序的编写 服务器端的程序编写: 1、 在服务器端创建一个新的工程将其命名为quotserverquot。
2、将缺省窗体命名为quotserverquot。
3、在窗体中添加一个 ListBox 控件,将其命名为quotListBoxquot。
4、在窗体中添加一个 WinSock 控件,其名默认为 Winsock1,并将其属 性quotIndexquot属性设置为 0。
5、 其名分别为quottextserverIPquot、 在窗体上添加两个 TextBox 控件, quottextnumquot, textnum 的初始值设为 0. 6、在窗体上添加三个 Label 控件,其名默认为 Label1、Label2、Label3, 、 、 并将它们的 Caption 属性改为“服务器 IP”“在线人数”“客户端 IP 列表” 。
7、在窗体上添加一个 Command 控件,其名默认为 Command1,将其 Caption 属性改为“退出”。
8、在窗体中添加如下
代码: Private Gac As Boolean Dim socknum As Integer 定义变量 Private Sub Form_Load 设置侦听端口 Winsock10.LocalPort 10001 读取服务器的 IP 地址 textserverIP.Text Winsock1.LocalIP 开始侦听 Winsock1.Listen 设置变量初始值 socknumber 0 End Sub Private Sub Form_UnloadCancel As Integer unload 时关闭 winsock 控件 Winsock10.Close End Sub Private Sub Command_Click 点击退出按键退出系统 End End Sub Private Sub Winsock1_CloseIndex As Integer 关闭 winsock Winsock1Index.Close Unload Winsock1Index GacIndex False textnum.Text Inttextnum.Text - 1 End Sub Private Sub Winsock1_ConnectionRequestIndex As Integer ByVal requestID As Long 当客户机发送连接请求时,触发该事件 Dim ip As String 定义变量 socknumber socknumber 1 连接请求 Load Winsock1socknumber Winsock1socknumber.Accept requestID 使用 accept 方法接受连接 请求 ReDim Preserve Gacsocknumber Gacsocknumber True textnum.Text Inttextnum.Text 1 ip Winsock1Index.RemoteHostIP 读出发送请求的客户端 IP List1.AddItem ip 将得到的客户端 IP 在 List
列表中显示 End Sub Private Sub Winsock1_DataArrivalIndex As Integer ByVal bytesTotal As Long 当客户端有数据发送过来时,触发该事件 Dim text As String Winsock1Index.GetData text 数据到达 Dim i As Integer For i 1 To UBoundGac If Not i Index Then If Gaci Then Winsock1i.SendData text 利用 SendData 方法发送数据 DoEvents End If End If Next i End Sub客户端的程序编写: 1、在客户端创建一个新的工程将其命名为“client” 。
2、将缺省窗体命名为 “client”。
3、将窗体的标题改为“client”。
4、在窗体中添加一个 WinSock 控件,默认其命名为 Winsock1。
5、在窗体中添加三个 TextBox 控件。
其名分别命为 textserverIP、textsend、textreceive,并将其内容清空。
6、在窗体中添加四个 CommandButton 控件。
其命名默认为 Command1、Command2、Command3、Command4,并将它们的 Caption 属性 分 别 修 改 、 、 、为 “连接”“发送”“清空”“退出” 。
7、在窗体上放四个 Label 控件,其命名默认为 Label1、Label2、Label3, 、 、并将它们的 Caption 属性修改为“发送”“聊天记录” “服务器 IP” 。
8、在窗体中添加如下的
代码: Private Sub Form_Load Command2.Enabled False 发送键无效 设置侦听端口 Winsock1.RemotePort 10001 End Sub Private Sub Command5_Click 按退出键,退出程序 End End Sub Private Sub Command1_Click 连接服务器 根据 textserverIP 文本框输入的服务器 IP 地址,进行连接 Winsock1.RemoteHost TrimtextserverIP.Text Winsock1.Connect Command1.Enabled False Do DoEvents Loop Until Winsock1.State sckConnected Or Winsock1.State sckError If Winsock1.State sckError Then Command1.Enabled True Winsock1.Close Else 如果与服务器连接成功,则提示下面内容 MsgBox quot您成功与服务器连接quot Command2.Enabled True textserverIP.Enabled False textsend.SetFocus End If End Sub Private Sub Command2_Click 发送消息 If textsend.Text quotquot Then MsgBox quot不能发送空消息quot Else Winsock1.SendData textsend.Text textreceive.Text textreceive.Text quot我说的话: quot textsend.Text Chr13 Chr10 textsend.Text quotquot End If textsend.SetFocus End Sub Private Sub Command4_Click 清空聊天记录程序段 textreceive.Text quot quot textsend.SetFocus End Sub Private Sub Winsock1_DataArrivalByVal bytesTotal As Long服务器数据发来 Dim c As String 定义变量 当服务器有数据发来,用 getdata 方法获取,然后显示在 textreceive 文 本框内 Winsock1.GetData c textreceive.Text textreceive.Text quot对方说的话: quot c Chr13 Chr10 End Sub2.3.4 生成可执行文件 点击“文件”—“server.exe”即可生成服务器端的可执行文件, 如下图所示: (client.exe 的生成方法相同)2.4 结果测试 ,运行服务器a、双击“server.exe” 双击 .