vb有winsock 控件 為什麼你又要自己封裝

解决方案 »

  1.   

    Attribute VB_Name = "WSKSOCK"
    Option ExplicitPublic Const FD_SETSIZE = 64
    Type fd_set    fd_count As Integer
        fd_array(FD_SETSIZE) As Integer
    End TypeType timeval    tv_sec As Long
        tv_usec As Long
    End TypeType HOSTENT    h_name As Long
        h_aliases As Long
        h_addrtype As Integer
        h_length As Integer
        h_addr_list As Long
    End Type
    Public Const hostent_size = 16Type servent    s_name As Long
        s_aliases As Long
        s_port As Integer
        s_proto As Long
    End Type
    Public Const servent_size = 14Type protoent    p_name As Long
        p_aliases As Long
        p_proto As Integer
    End Type
    Public Const protoent_size = 10Public Const IPPROTO_TCP = 6
    Public Const IPPROTO_UDP = 17Public Const INADDR_NONE = &HFFFFFFFF
    Public Const INADDR_ANY = &H0Type sockaddr    sin_family As Integer
        sin_port As Integer
        sin_addr As Long
        sin_zero As String * 8
    End Type
    Public Const sockaddr_size = 16
    Public saZero As sockaddrPublic Const WSA_DESCRIPTIONLEN = 256
    Public Const WSA_DescriptionSize = WSA_DESCRIPTIONLEN + 1Public Const WSA_SYS_STATUS_LEN = 128
    Public Const WSA_SysStatusSize = WSA_SYS_STATUS_LEN + 1Type WSADataType    wversion As Integer
        wHighVersion As Integer
        szDescription As String * WSA_DescriptionSize
        szSystemStatus As String * WSA_SysStatusSize
        iMaxSockets As Integer
        iMaxUdpDg As Integer
        lpVendorInfo As Long
    End TypePublic Const INVALID_SOCKET = -1
    Public Const SOCKET_ERROR = -1Public Const SOCK_STREAM = 1
    Public Const SOCK_DGRAM = 2Public Const MAXGETHOSTSTRUCT = 1024Public Const AF_INET = 2
    Public Const PF_INET = 2Type LingerType    l_onoff As Integer
        l_linger As Integer
    End Type
    ' Windows Sockets definitions of regular Microsoft C error constants
    Global Const WSAEINTR = 10004
    Global Const WSAEBADF = 10009
    Global Const WSAEACCES = 10013
    Global Const WSAEFAULT = 10014
    Global Const WSAEINVAL = 10022
    Global Const WSAEMFILE = 10024
    ' Windows Sockets definitions of regular Berkeley error constants
    Global Const WSAEWOULDBLOCK = 10035
    Global Const WSAEINPROGRESS = 10036
    Global Const WSAEALREADY = 10037
    Global Const WSAENOTSOCK = 10038
    Global Const WSAEDESTADDRREQ = 10039
    Global Const WSAEMSGSIZE = 10040
    Global Const WSAEPROTOTYPE = 10041
    Global Const WSAENOPROTOOPT = 10042
    Global Const WSAEPROTONOSUPPORT = 10043
    Global Const WSAESOCKTNOSUPPORT = 10044
    Global Const WSAEOPNOTSUPP = 10045
    Global Const WSAEPFNOSUPPORT = 10046
    Global Const WSAEAFNOSUPPORT = 10047
    Global Const WSAEADDRINUSE = 10048
    Global Const WSAEADDRNOTAVAIL = 10049
    Global Const WSAENETDOWN = 10050
    Global Const WSAENETUNREACH = 10051
    Global Const WSAENETRESET = 10052
    Global Const WSAECONNABORTED = 10053
    Global Const WSAECONNRESET = 10054
    Global Const WSAENOBUFS = 10055
    Global Const WSAEISCONN = 10056
    Global Const WSAENOTCONN = 10057
    Global Const WSAESHUTDOWN = 10058
    Global Const WSAETOOMANYREFS = 10059
    Global Const WSAETIMEDOUT = 10060
    Global Const WSAECONNREFUSED = 10061
    Global Const WSAELOOP = 10062
    Global Const WSAENAMETOOLONG = 10063
    Global Const WSAEHOSTDOWN = 10064
    Global Const WSAEHOSTUNREACH = 10065
    Global Const WSAENOTEMPTY = 10066
    Global Const WSAEPROCLIM = 10067
    Global Const WSAEUSERS = 10068
    Global Const WSAEDQUOT = 10069
    Global Const WSAESTALE = 10070
    Global Const WSAEREMOTE = 10071
    ' Extended Windows Sockets error constant definitions
    Global Const WSASYSNOTREADY = 10091
    Global Const WSAVERNOTSUPPORTED = 10092
    Global Const WSANOTINITIALISED = 10093
    Global Const WSAHOST_NOT_FOUND = 11001
    Global Const WSATRY_AGAIN = 11002
    Global Const WSANO_RECOVERY = 11003
    Global Const WSANO_DATA = 11004
    Global Const WSANO_ADDRESS = 11004
    '---ioctl Constants
    Public Const FIONREAD = &H8004667F
    Public Const FIONBIO = &H8004667E
    Public Const FIOASYNC = &H8004667D'---Windows System Functions
    Public Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    Public Declare Sub MemCopy Lib "kernel32" Alias "RtlMoveMemory" (Dest As Any, Src As Any, ByVal cb&)
    Public Declare Function lstrlen Lib "kernel32" Alias "lstrlenA" (ByVal lpString As Any) As Long
    '---async notification constants
    Public Const SOL_SOCKET = &HFFFF&
    Public Const SO_LINGER = &H80&
    Public Const FD_READ = &H1&
    Public Const FD_WRITE = &H2&
    Public Const FD_OOB = &H4&
    Public Const FD_ACCEPT = &H8&
    Public Const FD_CONNECT = &H10&
    Public Const FD_CLOSE = &H20&
    '---SOCKET FUNCTIONS
    Public Declare Function accept Lib "WSOCK32.DLL" (ByVal s As Long, addr As sockaddr, addrLen As Long) As Long
    Public Declare Function bind Lib "WSOCK32.DLL" (ByVal s As Long, addr As sockaddr, ByVal namelen As Long) As Long
    Public Declare Function closesocket Lib "WSOCK32.DLL" (ByVal s As Long) As Long
    Public Declare Function connect Lib "WSOCK32.DLL" (ByVal s As Long, addr As sockaddr, ByVal namelen As Long) As Long
    Public Declare Function ioctlsocket Lib "WSOCK32.DLL" (ByVal s As Long, ByVal cmd As Long, argp As Long) As Long
    Public Declare Function getpeername Lib "WSOCK32.DLL" (ByVal s As Long, sName As sockaddr, namelen As Long) As Long
    Public Declare Function getsockname Lib "WSOCK32.DLL" (ByVal s As Long, sName As sockaddr, namelen As Long) As Long
    Public Declare Function getsockopt Lib "WSOCK32.DLL" (ByVal s As Long, ByVal level As Long, ByVal optname As Long, optval As Any, optlen As Long) As Long
    Public Declare Function htonl Lib "WSOCK32.DLL" (ByVal hostlong As Long) As Long
    Public Declare Function htons Lib "WSOCK32.DLL" (ByVal hostshort As Long) As Integer
    Public Declare Function inet_addr Lib "WSOCK32.DLL" (ByVal cp As String) As Long
    Public Declare Function inet_ntoa Lib "WSOCK32.DLL" (ByVal inn As Long) As Long
    Public Declare Function listen Lib "WSOCK32.DLL" (ByVal s As Long, ByVal backlog As Long) As Long
    Public Declare Function ntohl Lib "WSOCK32.DLL" (ByVal netlong As Long) As Long
    Public Declare Function ntohs Lib "WSOCK32.DLL" (ByVal netshort As Long) As Integer
    Public Declare Function recv Lib "WSOCK32.DLL" (ByVal s As Long, ByVal buf As Any, ByVal buflen As Long, ByVal flags As Long) As Long
    Public Declare Function recvfrom Lib "WSOCK32.DLL" (ByVal s As Long, buf As Any, ByVal buflen As Long, ByVal flags As Long, from As sockaddr, fromlen As Long) As Long
    Public Declare Function ws_select Lib "WSOCK32.DLL" Alias "select" (ByVal nfds As Long, readfds As fd_set, writefds As fd_set, exceptfds As fd_set, TimeOut As timeval) As Long
    Public Declare Function send Lib "WSOCK32.DLL" (ByVal s As Long, buf As Any, ByVal buflen As Long, ByVal flags As Long) As Long
    Public Declare Function sendto Lib "WSOCK32.DLL" (ByVal s As Long, buf As Any, ByVal buflen As Long, ByVal flags As Long, to_addr As sockaddr, ByVal tolen As Long) As Long
    Public Declare Function setsockopt Lib "WSOCK32.DLL" (ByVal s As Long, ByVal level As Long, ByVal optname As Long, optval As Any, ByVal optlen As Long) As Long
    Public Declare Function ShutDown Lib "WSOCK32.DLL" Alias "shutdown" (ByVal s As Long, ByVal how As Long) As Long
    Public Declare Function socket Lib "WSOCK32.DLL" (ByVal af As Long, ByVal s_type As Long, ByVal protocol As Long) As Long
      

  2.   

    '---DATABASE FUNCTIONS
    Public Declare Function gethostbyaddr Lib "WSOCK32.DLL" (addr As Long, ByVal addr_len As Long, ByVal addr_type As Long) As Long
    Public Declare Function gethostbyname Lib "WSOCK32.DLL" (ByVal host_name As String) As Long
    Public Declare Function gethostname Lib "WSOCK32.DLL" (ByVal host_name As String, ByVal namelen As Long) As Long
    Public Declare Function getservbyport Lib "WSOCK32.DLL" (ByVal Port As Long, ByVal proto As String) As Long
    Public Declare Function getservbyname Lib "WSOCK32.DLL" (ByVal serv_name As String, ByVal proto As String) As Long
    Public Declare Function getprotobynumber Lib "WSOCK32.DLL" (ByVal proto As Long) As Long
    Public Declare Function getprotobyname Lib "WSOCK32.DLL" (ByVal proto_name As String) As Long
    '---WINDOWS EXTENSIONS
    Public Declare Function WSAStartup Lib "WSOCK32.DLL" (ByVal wVR As Long, lpWSAD As WSADataType) As Long
    Public Declare Function WSACleanup Lib "WSOCK32.DLL" () As Long
    Public Declare Sub WSASetLastError Lib "WSOCK32.DLL" (ByVal iError As Long)
    Public Declare Function WSAGetLastError Lib "WSOCK32.DLL" () As Long
    Public Declare Function WSAIsBlocking Lib "WSOCK32.DLL" () As Long
    Public Declare Function WSAUnhookBlockingHook Lib "WSOCK32.DLL" () As Long
    Public Declare Function WSASetBlockingHook Lib "WSOCK32.DLL" (ByVal lpBlockFunc As Long) As Long
    Public Declare Function WSACancelBlockingCall Lib "WSOCK32.DLL" () As Long
    Public Declare Function WSAAsyncGetServByName Lib "WSOCK32.DLL" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal serv_name As String, ByVal proto As String, buf As Any, ByVal buflen As Long) As Long
    Public Declare Function WSAAsyncGetServByPort Lib "WSOCK32.DLL" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal Port As Long, ByVal proto As String, buf As Any, ByVal buflen As Long) As Long
    Public Declare Function WSAAsyncGetProtoByName Lib "WSOCK32.DLL" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal proto_name As String, buf As Any, ByVal buflen As Long) As Long
    Public Declare Function WSAAsyncGetProtoByNumber Lib "WSOCK32.DLL" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal number As Long, buf As Any, ByVal buflen As Long) As Long
    Public Declare Function WSAAsyncGetHostByName Lib "WSOCK32.DLL" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal host_name As String, buf As Any, ByVal buflen As Long) As Long
    Public Declare Function WSAAsyncGetHostByAddr Lib "WSOCK32.DLL" (ByVal hWnd As Long, ByVal wMsg As Long, addr As Long, ByVal addr_len As Long, ByVal addr_type As Long, buf As Any, ByVal buflen As Long) As Long
    Public Declare Function WSACancelAsyncRequest Lib "WSOCK32.DLL" (ByVal hAsyncTaskHandle As Long) As Long
    Public Declare Function WSAAsyncSelect Lib "WSOCK32.DLL" (ByVal s As Long, ByVal hWnd As Long, ByVal wMsg As Long, ByVal lEvent As Long) As Long
    Public Declare Function WSARecvEx Lib "WSOCK32.DLL" (ByVal s As Long, buf As Any, ByVal buflen As Long, ByVal flags As Long) As Long'SOME STUFF I ADDED
    Public Declare Function InternetGetConnectedState _
                  Lib "wininet.dll" (ByRef lpdwFlags As Long, _
                  ByVal dwReserved As Long) As LongPublic MySocket%
    Public SockReadBuffer$
    Public Const WSA_NoName = "Unknown"
    Public WSAStartedUp As Boolean     'Flag to keep track of whether winsock WSAStartup wascalled
    'Ping
    Private Type ICMP_OPTIONS
        Ttl             As Byte
        Tos             As Byte
        flags           As Byte
        OptionsSize     As Byte
        OptionsData     As Long
    End Type
    Private Type ICMP_ECHO_REPLY
        Address         As Long
        Status          As Long
        RoundTripTime   As Long
        DataSize        As Long  'formerly integer
        '  Reserved        As Integer
        DataPointer     As Long
        Options         As ICMP_OPTIONS
        Data            As String * 250
    End Type
    Private Const PING_TIMEOUT = 200
    Declare Sub RtlMoveMemory Lib "kernel32" (hpvDest As Any, ByVal hpvSource As Long, ByVal cbCopy As Long)
    Declare Function IcmpCreateFile Lib "Icmp.dll" () As Long
    Declare Function IcmpSendEcho Lib "Icmp.dll" (ByVal IcmpHandle As Long, ByVal DestinationAddress As Long, ByVal RequestData As String, ByVal RequestSize As Long, ByVal RequestOptions As Long, ReplyBuffer As ICMP_ECHO_REPLY, ByVal ReplySize As Long, ByVal TimeOut As Long) As Long
    Declare Function IcmpCloseHandle Lib "Icmp.dll" (ByVal IcmpHandle As Long) As Long
    'DNSInfo
    Private Type IP_ADDRESS_STRING
        IpAddressString(4 * 4 - 1) As Byte
    End TypePrivate Type IP_MASK_STRING
        IpMaskString(4 * 4 - 1) As Byte
    End TypePrivate Type IP_ADDR_STRING
    Next      As Long
    IpAddress As IP_ADDRESS_STRING
    IpMask    As IP_MASK_STRING
    Context   As Long
    End TypePrivate Const MAX_HOSTNAME_LEN = 128
    Private Const MAX_DOMAIN_NAME_LEN = 128
    Private Const MAX_SCOPE_ID_LEN = 256Private Type FIXED_INFO
        hostname(MAX_HOSTNAME_LEN + 4 - 1) As Byte
        DomainName(MAX_DOMAIN_NAME_LEN + 4 - 1) As Byte
        CurrentDnsServer As Long
        DnsServerList    As IP_ADDR_STRING
        NodeType         As Long
        ScopeId(MAX_SCOPE_ID_LEN + 4 - 1) As Byte
        EnableRouting    As Long
        EnableProxy      As Long
        EnableDns        As Long
    End TypePublic Const ERROR_BUFFER_OVERFLOW = 111Private Declare Function GetNetworkParams Lib "iphlpapi.dll" _
                    (pFixedInfo As Any, _
                    pOutBufLen As Long) As Long
    Private Declare Sub MoveMemory Lib "kernel32.dll" _
                    Alias "RtlMoveMemory" _
                    (Destination As Any, _
                    Source As Any, _
                    ByVal Length As Long)
    'For Wait Routines
    Declare Function timeGetTime Lib "winmm.dll" () As LongPublic Function WSAGetAsyncBufLen(ByVal lParam As Long) As Long    If (lParam And &HFFFF&) > &H7FFF Then
            WSAGetAsyncBufLen = (lParam And &HFFFF&) - &H10000
          Else
            WSAGetAsyncBufLen = lParam And &HFFFF&
        End IfEnd FunctionPublic Function WSAGetSelectEvent(ByVal lParam As Long) As Integer    If (lParam And &HFFFF&) > &H7FFF Then
            WSAGetSelectEvent = (lParam And &HFFFF&) - &H10000
          Else
            WSAGetSelectEvent = lParam And &HFFFF&
        End IfEnd Function