⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 winsock.bas

📁 《Windows网络编程技术》随书源码.rar
💻 BAS
📖 第 1 页 / 共 3 页
字号:
' * Extended Windows Sockets error constant definitions
' */
Global Const WSASYSNOTREADY = (WSABASEERR + 91)
Global Const WSAVERNOTSUPPORTED = (WSABASEERR + 92)
Global Const WSANOTINITIALISED = (WSABASEERR + 93)
Global Const WSAEDISCON = (WSABASEERR + 101)
Global Const WSAENOMORE = (WSABASEERR + 102)
Global Const WSAECANCELLED = (WSABASEERR + 103)
Global Const WSAEINVALIDPROCTABLE = (WSABASEERR + 104)
Global Const WSAEINVALIDPROVIDER = (WSABASEERR + 105)
Global Const WSAEPROVIDERFAILEDINIT = (WSABASEERR + 106)
Global Const WSASYSCALLFAILURE = (WSABASEERR + 107)
Global Const WSASERVICE_NOT_FOUND = (WSABASEERR + 108)
Global Const WSATYPE_NOT_FOUND = (WSABASEERR + 109)
Global Const WSA_E_NO_MORE = (WSABASEERR + 110)
Global Const WSA_E_CANCELLED = (WSABASEERR + 111)
Global Const WSAEREFUSED = (WSABASEERR + 112)

'/*
' * Error return codes from gethostbyname() and gethostbyaddr()
' * (when using the resolver). Note that these errors are
' * retrieved via WSAGetLastError() and must therefore follow
' * the rules for avoiding clashes with error numbers from
' * specific implementations or language run-time systems.
' * For this reason the codes are based at WSABASEERR+1001.
' * Note also that [WSA]NO_ADDRESS is defined only for
' * compatibility purposes.
' */

'/* Authoritative Answer: Host not found */
Global Const WSAHOST_NOT_FOUND = (WSABASEERR + 1001)

'/* Non-Authoritative: Host not found, or SERVERFAIL */
Global Const WSATRY_AGAIN = (WSABASEERR + 1002)

'/* Non-recoverable errors, FORMERR, REFUSED, NOTIMP */
Global Const WSANO_RECOVERY = (WSABASEERR + 1003)

'/* Valid name, no data record of requested type */
Global Const WSANO_DATA = (WSABASEERR + 1004)

'/*
' * Define QOS related error return codes
' *
' */
Global Const WSA_QOS_RECEIVERS = (WSABASEERR + 1005)
         '/* at least one Reserve has arrived */
Global Const WSA_QOS_SENDERS = (WSABASEERR + 1006)
         '/* at least one Path has arrived */
Global Const WSA_QOS_NO_SENDERS = (WSABASEERR + 1007)
         '/* there are no senders */
Global Const WSA_QOS_NO_RECEIVERS = (WSABASEERR + 1008)
         '/* there are no receivers */
Global Const WSA_QOS_REQUEST_CONFIRMED = (WSABASEERR + 1009)
         '/* Reserve has been confirmed */
Global Const WSA_QOS_ADMISSION_FAILURE = (WSABASEERR + 1010)
         '/* error due to lack of resources */
Global Const WSA_QOS_POLICY_FAILURE = (WSABASEERR + 1011)
         '/* rejected for administrative reasons - bad credentials */
Global Const WSA_QOS_BAD_STYLE = (WSABASEERR + 1012)
         '/* unknown or conflicting style */
Global Const WSA_QOS_BAD_OBJECT = (WSABASEERR + 1013)
         '/* problem with some part of the filterspec or providerspecific
         ' * buffer in general */
Global Const WSA_QOS_TRAFFIC_CTRL_ERROR = (WSABASEERR + 1014)
         '/* problem with some part of the flowspec */
Global Const WSA_QOS_GENERIC_ERROR = (WSABASEERR + 1015)
         '/* general error */

' connection types

Global Const SOCK_STREAM = 1               '/* stream socket */
Global Const SOCK_DGRAM = 2               '/* datagram socket */
Global Const SOCK_RAW = 3               '/* raw-protocol interface */
Global Const SOCK_RDM = 4               '/* reliably-delivered message */
Global Const SOCK_SEQPACKET = 5               '/* sequenced packet stream */

'/* Flag bit definitions for dwServiceFlags1 */
Global Const XP1_CONNECTIONLESS = &H1
Global Const XP1_GUARANTEED_DELIVERY = &H2
Global Const XP1_GUARANTEED_ORDER = &H4
Global Const XP1_MESSAGE_ORIENTED = &H8
Global Const XP1_PSEUDO_STREAM = &H10
Global Const XP1_GRACEFUL_CLOSE = &H20
Global Const XP1_EXPEDITED_DATA = &H40
Global Const XP1_CONNECT_DATA = &H80
Global Const XP1_DISCONNECT_DATA = &H100
Global Const XP1_SUPPORT_BROADCAST = &H200
Global Const XP1_SUPPORT_MULTIPOINT = &H400
Global Const XP1_MULTIPOINT_CONTROL_PLANE = &H800
Global Const XP1_MULTIPOINT_DATA_PLANE = &H1000
Global Const XP1_QOS_SUPPORTED = &H2000
Global Const XP1_INTERRUPT = &H4000
Global Const XP1_UNI_SEND = &H8000
Global Const XP1_UNI_RECV = &H10000
Global Const XP1_IFS_HANDLES = &H20000
Global Const XP1_PARTIAL_MESSAGE = &H40000

Global Const BIGENDIAN = &H0
Global Const LITTLEENDIAN = &H1

Global Const SECURITY_PROTOCOL_NONE = &H0

'/*
' * WinSock 2 extension -- manifest constants for WSAJoinLeaf()
' */
Global Const JL_SENDER_ONLY = &H1
Global Const JL_RECEIVER_ONLY = &H2
Global Const JL_BOTH = &H4

'/*
' * WinSock 2 extension -- manifest constants for WSASocket()
' */
Global Const WSA_FLAG_OVERLAPPED = &H1
Global Const WSA_FLAG_MULTIPOINT_C_ROOT = &H2
Global Const WSA_FLAG_MULTIPOINT_C_LEAF = &H4
Global Const WSA_FLAG_MULTIPOINT_D_ROOT = &H8
Global Const WSA_FLAG_MULTIPOINT_D_LEAF = &H10

'/*
' * WinSock 2 extension -- manifest constants for WSAIoctl()
' */
Global Const IOC_UNIX = &H0
Global Const IOC_WS2 = &H8000000
Global Const IOC_PROTOCOL = &H10000000
Global Const IOC_VENDOR = &H18000000

Global Const IOCPARM_MASK = &H7F              '/* parameters must be < 128 bytes */
Global Const IOC_VOID = &H20000000            '/* no parameters */
Global Const IOC_OUT = &H40000000             '/* copy out parameters */
Global Const IOC_IN = &H80000000              '/* copy in parameters */
Global Const IOC_INOUT = IOC_IN Or IOC_OUT

Global Const SIO_ASSOCIATE_HANDLE = IOC_IN Or IOC_WS2 Or 1
Global Const SIO_ENABLE_CIRCULAR_QUEUEING = IOC_VOID Or IOC_WS2 Or 2
Global Const SIO_FIND_ROUTE = IOC_OUT Or IOC_WS2 Or 3
Global Const SIO_FLUSH = IOC_VOID Or IOC_WS2 Or 4
Global Const SIO_GET_BROADCAST_ADDRESS = IOC_OUT Or IOC_WS2 Or 5
Global Const SIO_GET_EXTENSION_FUNCTION_POINTER = IOC_INOUT Or IOC_WS2 Or 6
Global Const SIO_GET_QOS = IOC_INOUT Or IOC_WS2 Or 7
Global Const SIO_GET_GROUP_QOS = IOC_INOUT Or IOC_WS2 Or 8
Global Const SIO_MULTIPOINT_LOOPBACK = IOC_IN Or IOC_WS2 Or 9
Global Const SIO_MULTICAST_SCOPE = IOC_IN Or IOC_WS2 Or 10
Global Const SIO_SET_QOS = IOC_IN Or IOC_WS2 Or 11
Global Const SIO_SET_GROUP_QOS = IOC_IN Or IOC_WS2 Or 12
Global Const SIO_TRANSLATE_HANDLE = IOC_INOUT Or IOC_WS2 Or 13
Global Const SIO_ROUTING_INTERFACE_QUERY = IOC_INOUT Or IOC_WS2 Or 20
Global Const SIO_ROUTING_INTERFACE_CHANGE = IOC_IN Or IOC_WS2 Or 21
Global Const SIO_ADDRESS_LIST_QUERY = IOC_OUT Or IOC_WS2 Or 22
Global Const SIO_ADDRESS_LIST_CHANGE = IOC_VOID Or IOC_WS2 Or 23
Global Const SIO_QUERY_TARGET_PNP_HANDLE = IOC_OUT Or IOC_WS2 Or 24

Type tcp_keepalive
    onoff As Long
    keepalivetime As Long
    keepaliveinterval As Long
End Type

Global Const SIO_RCVALL = IOC_IN Or IOC_VENDOR Or 1
Global Const SIO_RCVALL_MCAST = IOC_IN Or IOC_VENDOR Or 2
Global Const SIO_RCVALL_IGMPMCAST = IOC_IN Or IOC_VENDOR Or 3
Global Const SIO_KEEPALIVE_VALS = IOC_IN Or IOC_VENDOR Or 4
Global Const SIO_ABSORB_RTRALERT = IOC_IN Or IOC_VENDOR Or 5
Global Const SIO_UCAST_IF = IOC_IN Or IOC_VENDOR Or 6
Global Const SIO_LIMIT_BROADCASTS = IOC_IN Or IOC_VENDOR Or 7
Global Const SIO_INDEX_BIND = IOC_IN Or IOC_VENDOR Or 8
Global Const SIO_INDEX_MCASTIF = IOC_IN Or IOC_VENDOR Or 9
Global Const SIO_INDEX_ADD_MCAST = IOC_IN Or IOC_VENDOR Or 10
Global Const SIO_INDEX_DEL_MCAST = IOC_IN Or IOC_VENDOR Or 11

'/*
' * SockAddr Information
' */
Type SOCKET_ADDRESS
    lpSockaddr As Long
    iSockaddrLength As Long
End Type
'/*
' * CSAddr Information
' */
Type CSADDR_INFO
    LocalAddr As Long
    RemoteAddr As Long
    iSocketType As Long
    iProtocol As Long
End Type
'/*
' * Address list returned via SIO_ADDRESS_LIST_QUERY
' */
Type SOCKET_ADDRESS_LIST
    iAddressCount As Long
    Address(20) As SOCKET_ADDRESS 'here we hack a little bit
End Type
'/*
' *  Address Family/Protocol Tuples
' */
Type AFPROTOCOLS
    iAddressFamily As Long
    iProtocol As Long
End Type

'address constants
Global Const INADDR_NONE = &HFFFF
Global Const INADDR_ANY = &H0

Global Const SOL_SOCKET = &HFFFF&

Global Const INVALID_SOCKET = -1
Global Const SOCKET_ERROR = -1

Global Const MAXGETHOSTSTRUCT = 1024

Type GUID
    Data1 As Long
    Data2 As Integer
    Data3 As Integer
    Data4(7) As Byte
End Type
 
Global Const MAX_PROTOCOL_CHAIN = 7

Global Const BASE_PROTOCOL = 1
Global Const LAYERED_PROTOCOL = 0

Type WSAPROTOCOLCHAIN
     ChainLen As Long                                 '/* the length of the chain,     */
                                                  '/* length = 0 means layered protocol, */
                                                  '/* length = 1 means base protocol, */
                                                  '/* length > 1 means protocol chain */
    ChainEntries(MAX_PROTOCOL_CHAIN - 1) As Long   '/* a list of dwCatalogEntryIds */
End Type

Global Const WSAPROTOCOL_LEN = 255

Type WSAPROTOCOL_INFO
    dwServiceFlags1 As Long
    dwServiceFlags2 As Long
    dwServiceFlags3 As Long
    dwServiceFlags4 As Long
    dwProviderFlags As Long
    ProviderId As GUID
    dwCatalogEntryId As Long
    ProtocolChain As WSAPROTOCOLCHAIN
    iVersion As Long
    iAddressFamily As Long
    iMaxSockAddr As Long
    iMinSockAddr As Long
    iSocketType As Long
    iProtocol As Long
    iProtocolMaxOffset As Long
    iNetworkByteOrder As Long
    iSecurityScheme As Long
    dwMessageSize As Long
    dwProviderReserved As Long
    szProtocol(WSAPROTOCOL_LEN) As Byte
End Type

Global Const NS_ALL = 0

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -