1、整个程序采用Visual Basic 6.0来实现,由于在水信息计算机应用技术和水信息网络传输技术中,我们系统地学习了Visual Basic编程语言和计算机网络方面的相关知识,所以这次设计也是对前期学习成果的一次“实战检验”。2 .设计依据及用户界面该设计中所涉及到的网络通信协议主要是TCP/IP协议。TCP/IP协议是以传输控制协议TCP(Transmission Control Protocol)和网际协议IP(Internet Protocol)为核心的一组协议。TCP/IP协议自1974年诞生以来,逐步投入实际网络应用中,在1980年被加入UNIX内核,1983年1月1日又成为ARP
2、net(世界最早采用分组交换技术的广域网络)上唯一的正式协议。现在已经是国际互联网的标准协议。TCP/IP协议采用分组交换通信方式,即两台计算机之间要交换的信息不是作为一个整体进行传输,而是划分成大小基本相同的数据分组,这样的传输方式可以提高效率和安全性。 TCP/IP协议有三个主要的特点:功能丰富、开放性和普遍性。 图-2 TCP/IP参考模型2.1 设计平台设计中所涉及到的计算机编程语言是Visual Basic,程序开发平台采用Visual Basic 6.0。序开发平台采用Visual Basic 6.0。Visual Basic是早期Basic语言的基础上发展起来的一种可视化的Win
3、dows平台上的程序开发工具。最早的VB出现于1991年,即VB 1.0版本。它标志着Microsoft开始将Basci语言向可视化编程方向发展,虽然它的功能极其有限,但却有跨时代的意义。伴随着Windows操作平台的不断成熟,VB版本也不断升级。从1991年秋季推出VB 2.0到1998年秋季推出VB 6.0,短短的几年内VB有了巨大的提高,也一步步更加完善。VB 6.0为满足不同层次的用户需要,提供了三个版本:学习版(Learning)、专业版(Professional)和企业版(Enterprise)。我们主要用的是专业版,专业版包括所有的内部标准控件以及网络、表格和数据绑定等控件还包括
4、ActiveX控件、Internet控件和Crystal Report Writer等开发工具,适用于专业开发人员。2.2 用户界面 该程序设计的界面如图-3所示,风格简洁。图-3 程序设计的界面3.各模块功能及软件开发3.1 各模块功能简介在该程序的设计中,要使用到以下常用控件,见表-1。表-1 常用控件控件名称类型作用frmMainFormCHAT主窗体Winsock1Winsock连接控件Label1Label CONNECT WITH IP标签Label2 LabelLOCAL PORT标签Label3 REMOTE PORT标签txtRemoteIPTextBox 远程IP地址输入框
5、txtLocalPort 本地PORT输入框txtRemotePort远程PORT输入框cmdConnect CommandButton 连接CONNECT按钮Label4Type your text and hit Enter to send it.标签Frame1(remoteip)Frame REMOTE IP 框架Frame2(host ip)FrameHOST IP 框架Text1显示对方(远程主机)发送的CHAT内容Text2 输入己方(本地主机)要发送的CHAT内容,按ENTER键发送cmdClear 清空输入框(TEXT2)和显示框(TEXT1)中的内容StatusBar1St
6、atusBar状态栏常用控件简介窗体控件(Form):窗体(Form)是设计图形用户界面的基本平台,所有的控件都是绘制在窗体上的。程序运行时的每一个窗体对应于程序的一个窗口,是用户与应用程序交互操作的场所。文本框(TextBox):文本框是VB的一个重要控件,可用来显示和输入数据。实质上,文本框控件相当于一个简单的文本编辑器,它具有复制、剪切、粘贴和删除等功能,只不过在文本框中只能输入或显示最大为32768字节(32KB)的字符串。标签框(Label): 标签的功能比较简单,通常用来显示比较固定的提示性信息,不允许用户在程序运行时输入数据。按钮(Command): 命令按钮是Windows 程
7、序中常见的一种命令控制方式,用于接收用户的操作信息,并引发应用程序的某个操作。如同日常生活的按钮一样,当用户用鼠标单击命令按钮或选中命令按钮单击回车键时,就会激活相应的事件过程,所以有时命令按钮也简称为“按钮”。框架(Frame):框架是一种比较特殊的容器控件,常作为辅助性控件使用,可将多个选项按钮或复选框控件按功能分组。当用框架将多个控件划分成一组时,应先在窗体上放置框架,然后再在框架控件内放置其他控件。控件WinSock:该控件是Windows下的应用程序与网络协议之间的标准接口。利用WinSock控件可以与远程计算机建立连接,并通过用户数据文报协议 (UDP)或者传输控制协议 (TCP)
8、进行数据交换。这两种协议都可以用来创建客户与服务器应用程序。与 Timer控件类似,WinSock控件在运行时是不可见的。在本设计中我们用到了以下几个WINSOCK的属性:1) PROTOCOL(控制协议)属性,在本设计中,我们将PROTOCOL属性设置为sckUDPProtocol。2) 属性RemoteHost是远程主机的地址,LocalPort、RemotePort分别本地主机的端口和远程主机端口,对客户来说,该属性指定发送数据的本地端口,而对于服务器来说,这是用于侦听的本地端口,我们在设置这两个属性时必须保证两台主机的端口值符合下面规则,即主机1的LocalPort等于主机2的Remo
9、tePort值,同样主机1的RemotePort等于主机2的LocalPort值,这样才能保证两机通讯的正常进行。3) LocalIP属性用于返回本地机器的 IP地址,格式是IP地址加点的字符串 (xxx.xxx.xxx.xxx)。在本设计中我们用到了以下几个WINSOCK的方法:1) 在创建 UDP 应用程序时调用了 Bind 方法,这是必须的。Bind 方法的作用是为控件“保留”一个本地端口。例如,如果将控件绑定到1001号端口,那么其它应用程序将不能使用该端口进行“监听”。该方法阻止其它应用程序使用同样的端口。2) SendData方法用于发送一条数据给另一台主机,使用这个方法的语法是:
10、WinSock.SendData 要发送的数据3) GetData方法。当DataArrival事件出现时,代码调用GetData方法获取数据,并将数据存储在字符串变量中。使用语法是:WinSock.GetData 接收数据的变量 在本设计中我们用到了以下WINSOCK的事件: DataArrival事件:在本设计中我们使用了DataArrival事件,DataArrival事件在当新数据到达时被触发的事件,使用的语法为: WinSock1_DataArrival (bytesTotal As Long) 变量bytesTotal表示获取的数据总数量。在两个WINSOCK控件中间发送数据,关键
11、要完成以下三步:1、将RemoteHost属性设置为另一台计算机的IP地址。 2、将RemotePort属性设置为第二个控件的LocalPort属性。 3、调用Bind方法,指定使用的LocalPort。3.2 软件开发流程以下介绍软件的编制步骤:1打开Visual Basic 6.0的集成开发环境,创建一个新的标准EXE文件。将缺省的窗体名修改为frmMain,并将其Caption属性修改为“局域网聊天程序”。2. 在窗体中添加一个WinSock控件,在其“属性”页上,单击“协议”,并将协议修改为sckUDPProtocol。尔后陆续添加其他控件(详见3.1节内容),并修改其相应的属性。3编
12、写代码,由于代码较长,这里不再展开叙述,详见附录。4代码编写完成后,将程序生成“Chat.EXE”文件,到此该软件开发完成。4软件调试分析 将“Chat.EXE”程序,分别安装到局域网内的两台计算机上,如图-4所示。图-4 程序调试图按照图中的标注,分别设置A、B两台计算机中Chat.exe程序的各项参数。然后点击“连接”,连接成功后,在程序的状态栏中会显示“连接成功”字样,此时聊天方可进行。图-5软件调试图5设计心得 这次课程设计的核心是熟练掌握VB语言,并将它运用到网络设计中。如何将课本中基本的程序代码,正确灵活得运用到实际程序当中,并能够使其发挥作用,保证程序的正常运行是难点。 在此次设
13、计当中,最常出现的问题就是当运用到哪个控件和代码时,有印象但必须借助课本才能准确书写,又或者在某项任务中,不知该如何选择程序,这都是基本功不扎实的表现。因此,反复巩固vb语言的的基本知识,多动手多动脑是学好vb语言的关键。通过这次课程设计,对vb语言的实际应用有了更加深刻的体验,并且可以将他用到自己的其他专业课程中,这是学以致用的精髓体现。参考文献(1) VB程序设计 胡 闫宏印。北京: 电子工业出版社,2006(宋体 五号)(2) 计算机网络 张增量 李生元。西安: 西安交通大学出版社附 录Option ExplicitPrivate IgnoreText As Boolean-当CLEAR
14、按钮按下时,清空TEXT1和TEXT2中的内容Private Sub cmdClear_Click()On Error Resume NextText1 = With Text2 清空输入框 .Text = 并把焦点置于TEXT2 .SetFocusEnd WithEnd Sub当CONNECT按钮按下时,进行以下操作Private Sub cmdConnect_Click()On Error GoTo ErrHandlerWith Winsock1设置 RemoteHost 属性 .RemoteHost = Trim(txtRemoteIP)设置 RemotePort 属性RemotePor
15、t 属性的值应该等于 远程主机上的 LocalHost 属性的值 .RemotePort = Trim(txtRemotePort) LocalPort 属性的值是不能改变的,必须检查它是否已经被设置如果 LocalPort 属性为空(没有被设置),将其设为在LocalPort输入框中输入的数值 If .LocalPort = Empty Then .LocalPort = Trim(txtLocalPort) Frame2.Caption = .LocalIP这是必须的,Bind 方法的作用是为控件“保留”一个本地端口,防止被其他用户调用。 .Bind.LocalPort End If为了保
16、证使用者不能改变LocalPort的值,将txtLocalPort输入框锁定txtLocalPort.Locked = True在状态栏中显示“正在连接”的状态StatusBar1.Panels(1).Text = Connected to & Winsock1.RemoteHost &如果连接正常,做以下设置Frame1.Enabled = TrueFrame2.Enabled = TrueLabel4.Visible = TrueText2.SetFocusExit Sub如果在连接过程中出现错误,则转向ErrHandler:,并显示错误提示ErrHandler:MsgBox Winsoc
17、k failed to establish connection with remote server, vbCritical当按下“F1”键时显示帮助信息Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)If KeyCode = vbKeyF1 ThenChDir App.Path调用外部程序notepad.exe来打开帮助文本文件Shell notepad.exe readme.txt, vbNormalFocusEnd If当窗体加载时显示提示信息并在 txtRemoteIP 框中显示本地主机的IPPrivate
18、Sub Form_Load()ShowWinsock UDT Chat vbCrLf &by Theo Kandiliotis (ionikhhol.gr)F1 for help., vbInformationtxtRemoteIP = Winsock1.LocalIP接收TEXT2输入框的按键,并做响应Private Sub Text2_KeyPress(KeyAscii As Integer)定义变量 Last_Line_Feed 来记录最后输入行的位置Static Last_Line_Feed As Long定义 New_Line 字符串记录新键入的一行文本的内容Dim New_Line
19、 As String如果使用者按下CLEAR按钮对输入框内容清空,这时TEXT2为空,则重设最后输入行的位置为0If Trim(Text2) = vbNullString Then Last_Line_Feed = 0当使用者按下ENTER键时If KeyAscii = 13 Then取得最后输入行的内容并赋值给 New_Line 字符串 New_Line = Mid(Text2, Last_Line_Feed + 1)重设最后输入行的位置 Last_Line_Feed = Text2.SelStart通过 WINSOCK 发送新输入的一行文本的内容 Winsock1.SendData New
20、_Line在状态栏显示发送信息 StatusBar1.Panels(2).Text = Sent (LenB(New_Line) / 2) & bytes 当 WINSOCK 接收到新的数据(信息)时,进行以下响应Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)定义 New_Text 字符串来记录新接收的信息Dim New_Text As String接收信息并赋值给 New_TextWinsock1.GetData New_Text在TEXT1显示框中显示新接收到的信息Text1.SelText = New_TextFrame1.Caption = Winsock1.RemoteHostIP在状态栏中显示接收信息StatusBar1.Panels(2).Text = Recieved bytesTotal &bytes
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1