• 休闲生活
  • 教育教学
  • 经济贸易
  • 政法军事
  • 人文社科
  • 农林牧渔
  • 信息科技
  • 建筑房产
  • 环境安全
  • 当前位置: 达达文档网 > 达达文库 > 信息科技 > 正文

    浅谈VB中Winsock控件的使用

    时间:2020-09-18 08:02:11 来源:达达文档网 本文已影响 达达文档网手机站

    摘要 WinSock是VB中创建网络应用程序的重要控件,本文就WinSock控件常用的属性和方法进行剖析,并结合实例说明。

    关键词 VB;WinSock;网络应用程序

    中图分类号TP393文献标识码A文章编号 1674-6708(2010)30-0236-01

    1 Winsock控件简介

    在VB中我们通常利用WinSock控件可以与远程计算机建立连接,并通过用户数据文报协议 (UDP)或者传输控制协议 (TCP)进行数据交换,这两种协议都可以用来创建客户与服务器应用程序。

    2 Winsock控件常用属性和方法的剖析

    1)RemoteHost属性:远程主机的地址,LocalPort、RemotePort分别本地主机的端口和远程主机端口,对客户来说,该属性指定发送数据的本地端口,而对于服务器来说,这是用于侦听的本地端口,我们在设置这两个属性时必须保证两台主机的端口值相同;

    2)LocalIP属性:用于返回本地机的 IP 地址,格式IP地址加点的字符串 (xxx.xxx.xxx.xxx);

    3)Bind 方法:其作用是为控件“保留”一个本地端口;

    4)SendData方法:用于发送一条数据给另一台主机,其语法是:WinSock.SendData [要发送的数据];

    5)GetData 方法:当DataArrival事件出现时,代码调用 GetData方法获取数据,并将数据存储在字符串变量中。使用语法是:WinSock.GetData [接收数据的变量]。

    3 使用WinSock控件实现的聊天室主要程序段

    3.1 主要控件说明

    3.2 主机之间连接程序

    Private Sub cmdConnect_Click()

    On Error GoTo ErrHandler

    With Winsock1

    .RemoteHost = Trim(txtRemoteIP)

    .RemotePort = Trim(txtRemotePort)

    If .LocalPort = Empty Then

    .LocalPort = Trim(txtLocalPort)

    Frame2.Caption = .LocalIP

    .Bind .LocalPort

    End If

    End With

    StatusBar1.Panels(1).Text = " Connected to " & Winsock1.RemoteHost & " "

    Exit Sub

    ErrHandler:

    MsgBox "Winsock failed to establish connection with remote server", vbCritical

    End Sub

    3.3 窗体初始化程序

    Private Sub Form_Load()

    Show

    MsgBox "Winsock UDT Chat" & vbCrLf & "by Theo Kandiliotis (ionikh@hol.gr)" & vbCrLf & vbCrLf & "F1 for help.", vbInformation

    txtRemoteIP = Winsock1.LocalIP

    End Sub

    3.4 TEXT2输入框的KeyPress事件

    Private Sub Text2_KeyPress(KeyAscii As Integer)

    Static Last_Line_Feed As Long

    Dim New_Line As String

    If Trim(Text2) = vbNullString Then Last_Line_Feed = 0

    If KeyAscii = 13 Then

    New_Line = Mid(Text2, Last_Line_Feed + 1)

    Last_Line_Feed = Text2.SelStart

    Winsock1.SendData New_Line

    StatusBar1.Panels(2).Text = "Sent " & (LenB(New_Line) / 2) & " bytes"

    End If

    End Sub

    3.5 WINSOCK 接收到新的数据时的响应

    Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)

    Dim New_Text As String

    Winsock1.GetData New_Text

    Text1.SelText = New_Text

    StatusBar1.Panels(2).Text = "Recieved " & bytesTotal & " bytes"

    End Sub

    参考文献

    [1]曾强聪.Visual Basic 6.0程序设计教程[M].北京:中国水利水电出版社,2003.

    相关热词搜索: 浅谈 控件 VB Winsock

    • 生活居家
    • 情感人生
    • 社会财经
    • 文化
    • 职场
    • 教育
    • 电脑上网