打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
在VB中使用Winsock 实现通信
最近刚接触VB,学习了用Winsock创建聊天应用程序。下面的实例分别用
TCP协议和UDP协议实现通讯。

1.选择通讯协议的标准
  在使用WinSock控件时,可以使用的协议包括TCP和UDP。两种协议之
间的重要区别在于它们的连接状态:a).TCP协议控件是基于连接的协议,可以
将它同电话系统相比。在开始数据传输之前,用户必须先建立连接。b).UDP协
议是一种无连接协议,两台计算机之间的传输类似于传递邮件:消息从一台计算
机发送到另一台计算机,但是两者之间没有明确的连接。

2.Winsock控件使用TCP协议
  如果应用程序要使用TCP协议,那么首先必须决定应用程序是服务器还是
客户端。如果要创建一个服务器端,那么应用程序需要“监听”指定的端口。当客
户端提出连接请求时,服务器端能够接受请求并建立连接。在连接建立之后,客
户端与服务器端可以自由地互相通讯。

2.1TCP服务器端
窗体设计:
 
 
为窗体添加如下的代码:
Private Sub Form_Load()
    
'设置本地端口号为6000
    
Winsock1.LocalPort 6000
    '打开监听
    
Winsock1.Listen
End Sub
Private Sub 
Winsock1_ConnectionRequest(ByValRequestlD As Long)
    
Dim myStr As String
    
如果当前状态处于连接状态,则先关闭连接,再接收新的请求
    If Winsock1.State <> sckClosed Then
        
myStr MsgBox("客户请求建立连接,是否允许?",vbOKCancel)
        
If myStr vbOK Then
            
'关闭连接
            
Winsock1.Close
            
'接收客户请求,建立连接
            
Winsock1.Accept RequestlD
            Winsock1.SendData '接收
            
MsgBox "与客户建立了新连接"
        End If
    End If
End Sub

Private Sub 
Winsock 1_DataArrival(ByVallbytes Total As Long)
    
Dim myStr As String
    
'调用GetData方法接收数据
    
Winsock1.GetData myStr
    Text2.Text myStr
End Sub
Private Sub 
Winsock1_Close()
    
Winsock1.Close
    
Winsock1.Listen
    MsgBox "与客户断开连接"
End Sub
Private Sub 
Text1_Change)
    
'当服务器端的文本框中的内容发生变化时,使用SendData方法发送信息
    
Winsock1.SendData Text1.Text
End Sub


2.2TCP客户端 
窗体设计:
 
 
为窗体添加如下代码: 
Private Sub Form_Load() 
    Text1 "192.168.1.22
    Text2 6000 
End Sub 

Private Sub Command1_Click() 
    If Winsock1.State sckClosed Then 
        '设置服务器的IP地址 
        Winsock1.RemoteHost TrimText1.Text
        '设置服务器的端口号 
        Winsock1.RemotePort TrimText2.Text
         
        '发出连接请求 
        Winsock1.Connect 
    End If 
End Sub 

Private Sub Winsock 1_DataArrival(ByValbytes Total As Long) 
    Dim myStr As String 
    '调用GetData方法接收数据 
    Winsock1.GetData myStr 
    Text4.Text myStr 
    Option1.Value True 
End Sub 

Private Sub Winsock1_Close() 
    Winsock1.Close 
    Option2.Value True 
End Sub 

Private Sub Text3_Change() 
    '当xtSend控件的内容发生变化时,调用SendData将信息传送给主机 
    Winsock1.SendData Text3.Text 
End Sub 


2.3运行方法 

1)同时运行服务器端程序和客户端程序,得到两个示意图(略) 
2)在客户端程序的界面中单击“连接”按钮,此时,服务器端程序显示“客户请 
求建立连接,是否允许?” 
3)单击“确定”,客户端的连接状态会变成“连接”状态,此时,两端已建立起 
连接。 
4)在服务器端的“发送的消息”文本框中输入信息,在客户端的“接收到的消息” 
文本框中会看到同样的消息,反之亦然。 


3.Winsock控件使用TCP协议 
创建UDP应用程序时必须调用Bind方法,Bind方法的作用是为控件“保留” 
一个本地端口。在使用UDP协议的时候,可以任意地改变RemoteHost和 
RemotePort属性,同时始终保持绑定在同一个LocalPort上。TCP协议与此不 
同,在改变RemoteHost和RemotePort属性之前,必须先关闭连接。因为两 
台计算机的地位可以看成“平等的”,这种应用程序也被称为点到点的。服务器端 
和客户端窗体布局相同,可把两端的名称分别设为“UDP通信A”“UDP通信B”, 
以示区分,两端的代码也相同。 

 
 
为窗体设计的代码如下:
Private Sub Command1_Click()
    
With Winsock1
        '设置远程主机名
        .
RemoteHost Trim(Text1.Text)
        
'设置远程端口号
        .
RemotePort Trim(Text2.Text)
        
'绑定本地端口号
        .
Bind Trim(Text3.Text)
    
End With
End Sub

Private Sub 
Text4_Change)
    
'数据发生变化时发送消息
    
Winsock1.SendData Text4.Text
End Sub
Private Sub 
Winsock1_DataArrival(ByValbytes Total As Long)
    
Dim myStr As String
    
'接收数据
    
Winsock1.GetData myStr
    '将接收到的数据显示在文本框中
    
Text5.Text myStr
End Sub

运行方法:在连个工程里分别创建两端窗体,同时运行两个实例,然后,
将一个应用程序的远程端口号设置成为另一个应用程序的本地端口号,然后单击
“连接”按钮,就可以实现两个程序之间的通信了。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
用VB实现客户——服务器(TCP/IP)编程实例 — 编程爱好者 programfan.c...
VB Winsock 控件TCP与UDP连接实例
VB Socket编程 框架
窗体标题就同步显示
利用Winsock控件实现FTP编程
VB6 通过winsock控件数组实现客户端和服务器多对一通信
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服