VB实现网络通信.doc
文本预览下载声明
1.引言
目前已经有多种主流的网络通信软件,也有很多种制作网络聊天室的方法。而使用VB制作是最为简单易行的。使用VB实现网络通信方法大同小异,本次制作参考的文献资料基本方法基本都是使用Winsock控件编写服务器端、客户端通信程序,实现了对基于TCP /IP协议的、面向连接的流方式套接字网络通信程序设计。
本次设计同样使用了VB 中的Winsock 控件完成了本次网络通信软件的设计制作,实现了两台计算机之间的通信初步实现服务器和客户端的通信和实现客户端之间的通信。
2.Winsock控件介绍
Winsock控件对用户来说是不可见的,它提供了访问 TCP 和 UDP 网络服务的方便途径。为编写客户或服务器应用程序,不必了解 TCP 的细节或调用低级的 Winsock APIs。通过设置控件的属性并调用其方法就可轻易连接到一台远程机器上去,并且还可双向交换数据。
打开Visual Basic6.0,点击“工程”→“部件”,弹出对话框,选择Microsoft Winsock Control 6.0 。这时在工具箱中会多一个控件,这就是Winsock控件,现在就可以开始使用它进行设计编程。
Winsock控件的常用属性:BytesReceived属性(接受数据的字节数),LocalHostName属性(本地主机名称),LocalIP属性(本地主机IP),LocalPort属性(本地主机端口),RemoteHost属性(远程主机名称),State属性(Winsock控件)(网络状态【连接、未连接】),Protocol属性(值为0-sckTCPProtocol 时使用TCP/ IP 协议,为1-sckUDPProtocol 时使用UDP 协议),Name属性(控件的名称),RemotePort属性(ActiveX控件)(远程主机端口),Object属性。
Winsock控件的常用方法:Accept方法(接受TCP连接请求),Bind方法,Close方法(关闭TCP连接),Listen方法(监听TCP数据),PeerData方法(获得数据),SendData方法(传输数据),GetData方法(获得数据)
Winsock控件的常用事件:Close事件(关闭连接),ConnectionRequest事件(连接请求),DataArrival事件(数据到达),SendComplete事件(数据传输完毕),SendProgress事件(数据传输中),Error事件(发生错误),Connect事件(建立连接)。
3.网络通信的实现
本次设计使用TCP(数据传输协议)基础数据传输协议允许创建和维护与远程计算机的连接。连接两台计算机就可彼此进行数据传输。
如果创建客户应用程序,就必须知道服务器计算机名或者 IP 地址(RemoteHost 属性),还要知道进行“侦听”的端口(RemotePort 属性),然后调用 Connect 方法。
如果创建服务器应用程序,就应设置一个收听端口(LocalPort 属性)并调用 Listen 方法。当客户计算机需要连接时就会发生 ConnectionRequest 事件。为了完成连接,可调用 ConnectionRequest 事件内的 Accept 方法。
建立连接后,任何一方计算机都可以收发数据。为了发送数据,可调用 SendData 方法。当接收数据时会发生 DataArrival 事件。调用 DataArrival 事件内的 GetData 方法就可获取数据。
3.1实现两台电脑之间的通信
新建工程将其缺省窗体命名为“frmA”;将窗体的标题改为“点对点通信(一)”。在窗体中添加一个 WinSock 控件。在窗体中添加3个TextBox 控件。默认其命名为Text1、TxtOutput、TxtSend,并将其内容清空;将TxtOutput和TxtSend的MultiLine属性设置为True,ScrollBars属性设置为2-Vertical。在窗体中添加2个CommandButton控件,并将它们的Caption属性分别修改为“设置”、“发送”。在窗体上放四个Label 控件,其命名默认为Label1、Label2、Label3,并将它们的Caption属性修改为“计算机名称(IP地址)”、“接收信息”、“发送信息”。如图:
在代码窗口添加代码:
Private Sub Command1_Click()
With WB
.RemoteHost = Text1.Text
.RemotePort = 1002
.Bind 1001
End With
txtSend.Enabled = True
Command1.Enabled = False
End Sub
Private Su
显示全部