一个Winsock控件可以让本地计算机连接到远程的计算机上,同时使用UDP或TCP协议,两个协议都能创建客户机和服务器应用 。
使用Winsock控件时,通信的双方需要选定相同的协议 。TCP协议适用于传送大容量、需要安全性保证的数据文件;而UDP协议适用于需要分别与很多下属通信,或者建立的连接比较多且为时变的情况,特别是在数据量很小的时候 。设定时可以使用Winsock1.Protocol =
sckTCPProtocol方法,首先要找到你的计算机的名称,并把它添入Winsock的LocalHost属性中 。
创建一个应用程序时,首先要确定你建立的是客户方应用还是服务器服务,只有建立的服务器应用开始工作,并进入监听状态时,客户应用程序才开始建立连接,进入正常的通信状态 。笔者建立了一个应用程序,它的功能是当客户方的鼠标移动时,服务器应用程序上能够实时显示该鼠标的位置 。下面是建立服务器应用的方法:
1.创建一个新的标准EXE文件;
2.加入一个Winsock控件;
3.加入如下代码:
Private Sub Form Load()
tcpServer.LocalPort = 1001
tcpServer.Localhost = 〃servser〃
tcpServer.remotePort = 1002
tcpServer.Localhost = 〃klint〃
tcpServer.Listen
End Sub
′连接检查
Private Sub tcpServer ConnectionRequest
(ByVal requestID As Long)
If tcpServer.StatesckClosed Then
tcpServer.Close
tcpServer.Accept requestID
End Sub
′发送数据
Private Sub frmserver monsemove(x,y)
tcpServer.SendData 〃x〃 str(x)
tcpServer.SendData 〃y〃 str(y)
End Sub
建立客户应用的方法为:
1.创建一个新的标准EXE文件;
2.加入一个Winsock控件;
3.加入两个TEXT框—— txt x和 txt y;
4.加入如下代码:
Private Sub Form Load()
tcpServer.LocalPort = 1002
tcpServer.Localhost = 〃klint〃
tcpServer.remotePort = 1001
tcpServer.Localhost = 〃servser〃
tcpServer.Listen
End Sub
′连接检查
Private Sub tcpklint ConnectionRequest
(ByVal requestID As Long)
If tcpklint.StatesckClosed Then
tcpklint.Close
tcpklint.Accept requestID
End Sub
Private Sub tcpClient DataArrival
(ByVal bytesTotal As Long)
Dim strData As String
tcpklint.GetData strData
if left(strData,1)=〃X〃then
txt x.Text = strData
else
txt y.Text = strData
endif
End Sub
以上例程实现的是一个非常简单的点对点通信,在此基础上略加改造,可以形成功能复杂的实时计算机网络A-A交互通信系统,用于控制、图形仿真等 。
使用UDP协议建立对等通信和通过TCP建立客户/服务器通信的方法略有不同,它不需要建立客户和服务器,而是建立对等通信 。此过程通过以下几步实现:
1.设定Winsock的RemoteHost 属性为一个通信的计算机名称;
2.设定 RemotePort 为一个接口号;
3.调用Winsock的Bind 事件绑定本地的接口号 。具体设定方法为:
Private Sub Form Load()
With Winsock1
.RemoteHost= 〃PeerB〃
.RemotePort = 1001 ′远程连接号
.Bind 1002
′绑定的本地号
End With
End Sub
程序的其它部分与TCP方法类似,即通过SendData 和GetData 方法发送或提取数据 。UDP和TCP协 议在使用中各有特点,如果灵活使用,可以得到很好的效果 。令人欣慰的是,VB5.0 中Winsock给我们提供了一种简便的数据传送方法,使我们得以轻松地实现网络点对点通信 。
VB与VB.NET串口及以太网通迅关于串口通讯的问题:
很明显 , 你还不知道(不会、不习惯)使用事件驱动的方式接收数据 。
建议你仔细看看串口组件(无论VB6还是VB.net)的OnComm事件,你的问题很容易解决 。
推荐阅读
- gis看面积,gis怎么根据面积大小显示
- 荣耀9x升级鸿蒙时间表,荣耀9x升级鸿蒙系统好不好
- 安卓安装bios设置,安卓 bios
- 成绩排序c语言用函数 c语言总成绩排序
- 影棚拍摄需要什么拍摄道具,影棚拍摄技巧
- 关于windows自带xp虚拟机安装的信息
- 怎么插入pdf里面的图片的简单介绍
- vb.net鼠标手型 vbnet模拟鼠标
- html做个界面代码,html写界面