• 在VBA中调用winsock控件


    如果系统没有Winsock控件的话,可以下载下面的控件MSWINSCK.OCX,然后将该文件复制到C:WindowsSystem32目录下。

    在VBE窗口中,从菜单“工具”->“引用”中,点击“浏览”按钮,选择MSWinSCK.ocx文件,再从“工具箱”的“附加控件”中选择Microsoft Winsock Control。

    此时使用Winsock控件的话,将会出现提示不安全的ActiveX控件的提示。可以点击同时下载的REG文件注册该控件即可。

     zudhVJHh.rar (48.41 KB, 下载次数: 495)

    一般在Excel的窗体中添加Winsock控件。

    使用Winsock控件的应用程序一般是Client/Server结构,也就是客户端/服务器端。

    以服务端为例,一般的步骤是:

    先设置LocalPort本地端口,然后使用Listen方法侦听数据请求。然后处理ConnectionRequest和DataArrival事件。使用完后使用Close方法关闭连接。

    Private Sub UserForm_Initialize()
        Winsock1.LocalPort = 1999
        Winsock1.Listen
    End Sub
    Private Sub UserForm_Terminate()
        Winsock1.Close
    End Sub
    Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
        If Winsock1.State <> sckClosed Then Winsock1.Close
        Winsock1.Accept requestID
    End Sub
    Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
        Dim Buffer() As Byte
        TransferedBytes = TransferedBytes + bytesTotal
        ReDim Buffer(bytesTotal - 1)
        Winsock1.GetData Buffer, vbArray + vbByte
    End Sub
    Private Sub Winsock1_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)
        Debug.Print "Sock Err:" & Description
    End Sub

    而客户端的一般步骤如下:

    设置远程服务器端口RemotePort属性,然后使用Connect方法连接。处理ConnectionRequest和DataArrival事件。发送数据就直接使用Send方法就可以了,可以发送字符串或者Byte数组。

    Private Sub UserForm_Initialize()
        Winsock1.RemoteHost = "127.0.0.1"
        Winsock1.RemotePort = 2999
        Winsock1.Connect
    End Sub
    Private Sub UserForm_Terminate()
        Winsock1.Close
    End Sub
    Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
        If Winsock1.State <> sckClosed Then Winsock1.Close
        Winsock1.Accept requestID
    End Sub

    Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
        Dim strData As String
        Winsock1.GetData strData, vbString
        If strData = "OK" Then
            Winsock1.Close
            Winsock1.RemotePort = 1999
            Winsock1.Connect
            MsgBox "You can send file now"
        End If
    End Sub

  • 相关阅读:
    windowsCE常用编译参数 及编译器列表
    摘抄System Architecture for Native Device Drivers
    django+vue学习系列
    FreeTextBox的ToolbarButton整理
    FreeTextBox实现机制
    Server的Transfer和Response的Redirect
    FTB2.0和CuteEditor的一些问题
    ASP.NET跨应用程序进行登录的解决
    testFTB2.0
    Rainbow分页解决方案
  • 原文地址:https://www.cnblogs.com/isunlitao/p/4588958.html
Copyright © 2020-2023  润新知