📄 winsock.bas
字号:
Attribute VB_Name = "Winsock"
Option Explicit
'/*
' * Option flags per-socket.
' */
Global Const SO_DEBUG = &H1 '/* turn on debugging info recording */
Global Const SO_ACCEPTCONN = &H2 '/* socket has had listen() */
Global Const SO_REUSEADDR = &H4 '/* allow local address reuse */
Global Const SO_KEEPALIVE = &H8 '/* keep connections alive */
Global Const SO_DONTROUTE = &H10 '/* just use interface addresses */
Global Const SO_BROADCAST = &H20 '/* permit sending of broadcast msgs */
Global Const SO_USELOOPBACK = &H40 '/* bypass hardware when possible */
Global Const SO_LINGER = &H80 '/* linger on close if data present */
Global Const SO_OOBINLINE = &H100 '/* leave received OOB data in line */
Global Const SO_DONTLINGER = SO_LINGER Xor &HFFFFFFFF
Global Const SO_EXCLUSIVEADDRUSE = SO_REUSEADDR Xor &HFFFFFFFF '/* disallow local address reuse */
'/*
' * Additional options.
' */
Global Const SO_SNDBUF = &H1001 '/* send buffer size */
Global Const SO_RCVBUF = &H1002 '/* receive buffer size */
Global Const SO_SNDLOWAT = &H1003 '/* send low-water mark */
Global Const SO_RCVLOWAT = &H1004 '/* receive low-water mark */
Global Const SO_SNDTIMEO = &H1005 '/* send timeout */
Global Const SO_RCVTIMEO = &H1006 '/* receive timeout */
Global Const SO_ERROR = &H1007 '/* get error status and clear */
Global Const SO_TYPE = &H1008 '/* get socket type */
'/*
' * WinSock 2 extension -- new options
' */
Global Const SO_GROUP_ID = &H2001 '/* ID of a socket group */
Global Const SO_GROUP_PRIORITY = &H2002 '/* the relative priority within a group*/
Global Const SO_MAX_MSG_SIZE = &H2003 '/* maximum message size */
Global Const SO_PROTOCOL_INFOA = &H2004 '/* WSAPROTOCOL_INFOA structure */
Global Const SO_PROTOCOL_INFOW = &H2005 '/* WSAPROTOCOL_INFOW structure */
Global Const PVD_CONFIG = &H3001 '/* configuration info for service provider */
'/*
' * TCP options.
' */
Global Const TCP_NODELAY = &H1
Global Const IP_OPTIONS = 1 '/* set/get IP options */
Global Const IP_HDRINCL = 2 '/* header is included with data */
Global Const IP_TOS = 3 '/* IP type of service and preced*/
Global Const IP_TTL = 4 '/* IP time to live */
Global Const IP_MULTICAST_IF = 9 '/* set/get IP multicast i/f */
Global Const IP_MULTICAST_TTL = 10 '/* set/get IP multicast ttl */
Global Const IP_MULTICAST_LOOP = 11 '/*set/get IP multicast loopback */
Global Const IP_ADD_MEMBERSHIP = 12 '/* add an IP group membership */
Global Const IP_DROP_MEMBERSHIP = 13 '/* drop an IP group membership */
Global Const IP_DONTFRAGMENT = 14 '/* don't fragment IP datagrams */
Type ip_mreq
imr_multiaddr As Long '/* IP multicast address of group */
imr_interface As Long '/* local IP address of interface */
End Type
Global Const AF_UNSPEC = 0 '/* unspecified */
'/*
' * Although AF_UNSPEC is defined for backwards compatibility, using
' * AF_UNSPEC for the "af" parameter when creating a socket is STRONGLY
' * DISCOURAGED. The interpretation of the "protocol" parameter
' * depends on the actual address family chosen. As environments grow
' * to include more and more address families that use overlapping
' * protocol values there is more and more chance of choosing an
' * undesired address family when AF_UNSPEC is used.
' */
Global Const AF_UNIX = 1 '/* local to host (pipes, portals) */
Global Const AF_INET = 2 '/* internetwork: UDP, TCP, etc. */
Global Const AF_IMPLINK = 3 '/* arpanet imp addresses */
Global Const AF_PUP = 4 '/* pup protocols: e.g. BSP */
Global Const AF_CHAOS = 5 '/* mit CHAOS protocols */
Global Const AF_NS = 6 '/* XEROX NS protocols */
Global Const AF_IPX = AF_NS '/* IPX protocols: IPX, SPX, etc. */
Global Const AF_ISO = 7 '/* ISO protocols */
Global Const AF_OSI = AF_ISO '/* OSI is ISO */
Global Const AF_ECMA = 8 '/* european computer manufacturers */
Global Const AF_DATAKIT = 9 '/* datakit protocols */
Global Const AF_CCITT = 10 '/* CCITT protocols, X.25 etc */
Global Const AF_SNA = 11 '/* IBM SNA */
Global Const AF_DECnet = 12 '/* DECnet */
Global Const AF_DLI = 13 '/* Direct data link interface */
Global Const AF_LAT = 14 '/* LAT */
Global Const AF_HYLINK = 15 '/* NSC Hyperchannel */
Global Const AF_APPLETALK = 16 '/* AppleTalk */
Global Const AF_NETBIOS = 17 '/* NetBios-style addresses */
Global Const AF_VOICEVIEW = 18 '/* VoiceView */
Global Const AF_FIREFOX = 19 '/* Protocols from Firefox */
Global Const AF_UNKNOWN1 = 20 '/* Somebody is using this! */
Global Const AF_BAN = 21 '/* Banyan */
Global Const AF_ATM = 22 '/* Native ATM Services */
Global Const AF_INET6 = 23 '/* Internetwork Version 6 */
Global Const AF_CLUSTER = 24 '/* Microsoft Wolfpack */
Global Const AF_12844 = 25 '/* IEEE 1284.4 WG AF */
Global Const AF_IRDA = 26 '/* IrDA */
Global Const AF_MAX = 27
Global Const NSPROTO_IPX = 1000
Global Const NSPROTO_SPX = 1256
Global Const NSPROTO_SPXII = 1257
Global Const ATPROTO_BASE = (1000 * AF_APPLETALK)
Global Const SOL_APPLETALK = (ATPROTO_BASE)
Global Const DDPPROTO_RTMP = (ATPROTO_BASE + 1)
Global Const DDPPROTO_NBP = (ATPROTO_BASE + 2)
Global Const DDPPROTO_ATP = (ATPROTO_BASE + 3)
Global Const DDPPROTO_AEP = (ATPROTO_BASE + 4)
Global Const DDPPROTO_RTMPRQ = (ATPROTO_BASE + 5)
Global Const DDPPROTO_ZIP = (ATPROTO_BASE + 6)
Global Const DDPPROTO_ADSP = (ATPROTO_BASE + 7)
Global Const DDPPROTO_MAX = (ATPROTO_BASE + 255)
'//
'// Define the higher layer appletalk protocol types
'//
Global Const ATPROTO_ADSP = (DDPPROTO_MAX + 1)
Global Const ATPROTO_ATP = (DDPPROTO_MAX + 2)
Global Const ATPROTO_ASP = (DDPPROTO_MAX + 3)
Global Const ATPROTO_PAP = (DDPPROTO_MAX + 4)
Global Const ATMPROTO_AALUSER = 0 '/* User-defined AAL */
Global Const ATMPROTO_AAL1 = 1 '/* AAL 1 */
Global Const ATMPROTO_AAL2 = 2 '/* AAL 2 */
Global Const ATMPROTO_AAL34 = 3 '/* AAL 3/4 */
Global Const ATMPROTO_AAL5 = 5 '/* AAL 5 */
'/*
' * Protocols
' */
Global Const IPPROTO_IP = 0 '/* dummy for IP */
Global Const IPPROTO_ICMP = 1 '/* control message protocol */
Global Const IPPROTO_IGMP = 2 '/* internet group management protocol */
Global Const IPPROTO_GGP = 3 '/* gateway^2 (deprecated) */
Global Const IPPROTO_TCP = 6 '/* tcp */
Global Const IPPROTO_PUP = 12 '/* pup */
Global Const IPPROTO_UDP = 17 '/* user datagram protocol */
Global Const IPPROTO_IDP = 22 '/* xns idp */
Global Const IPPROTO_ND = 77 '/* UNOFFICIAL net disk proto */
Global Const IPPROTO_RAW = 255 '/* raw IP packet */
Global Const IPPROTO_MAX = 256
'/*
' * Port/socket numbers: network standard functions
' */
Global Const IPPORT_ECHO = 7
Global Const IPPORT_DISCARD = 9
Global Const IPPORT_SYSTAT = 11
Global Const IPPORT_DAYTIME = 13
Global Const IPPORT_NETSTAT = 15
Global Const IPPORT_FTP = 21
Global Const IPPORT_TELNET = 23
Global Const IPPORT_SMTP = 25
Global Const IPPORT_TIMESERVER = 37
Global Const IPPORT_NAMESERVER = 42
Global Const IPPORT_WHOIS = 43
Global Const IPPORT_MTP = 57
'/*
' * Port/socket numbers: host specific functions
' */
Global Const IPPORT_TFTP = 69
Global Const IPPORT_RJE = 77
Global Const IPPORT_FINGER = 79
Global Const IPPORT_TTYLINK = 87
Global Const IPPORT_SUPDUP = 95
'/*
' * UNIX TCP sockets
' */
Global Const IPPORT_EXECSERVER = 512
Global Const IPPORT_LOGINSERVER = 513
Global Const IPPORT_CMDSERVER = 514
Global Const IPPORT_EFSSERVER = 520
'/*
' * UNIX UDP sockets
' */
Global Const IPPORT_BIFFUDP = 512
Global Const IPPORT_WHOSERVER = 513
Global Const IPPORT_ROUTESERVER = 520
' /* 520+1 also used */
'/*
' * Ports < IPPORT_RESERVED are reserved for
' * privileged processes (e.g. root).
' */
Global Const IPPORT_RESERVED = 1024
'/* Flag bit definitions for dwProviderFlags */
Global Const PFL_MULTIPLE_PROTO_ENTRIES = &H1
Global Const PFL_RECOMMENDED_PROTO_ENTRY = &H2
Global Const PFL_HIDDEN = &H4
Global Const PFL_MATCHES_PROTOCOL_ZERO = &H8
Global Const WSABASEERR = 10000
'/*
' * Windows Sockets definitions of regular Microsoft C error constants
' */
Global Const WSAEINTR = (WSABASEERR + 4)
Global Const WSAEBADF = (WSABASEERR + 9)
Global Const WSAEACCES = (WSABASEERR + 13)
Global Const WSAEFAULT = (WSABASEERR + 14)
Global Const WSAEINVAL = (WSABASEERR + 22)
Global Const WSAEMFILE = (WSABASEERR + 24)
'/*
' * Windows Sockets definitions of regular Berkeley error constants
' */
Global Const WSAEWOULDBLOCK = (WSABASEERR + 35)
Global Const WSAEINPROGRESS = (WSABASEERR + 36)
Global Const WSAEALREADY = (WSABASEERR + 37)
Global Const WSAENOTSOCK = (WSABASEERR + 38)
Global Const WSAEDESTADDRREQ = (WSABASEERR + 39)
Global Const WSAEMSGSIZE = (WSABASEERR + 40)
Global Const WSAEPROTOTYPE = (WSABASEERR + 41)
Global Const WSAENOPROTOOPT = (WSABASEERR + 42)
Global Const WSAEPROTONOSUPPORT = (WSABASEERR + 43)
Global Const WSAESOCKTNOSUPPORT = (WSABASEERR + 44)
Global Const WSAEOPNOTSUPP = (WSABASEERR + 45)
Global Const WSAEPFNOSUPPORT = (WSABASEERR + 46)
Global Const WSAEAFNOSUPPORT = (WSABASEERR + 47)
Global Const WSAEADDRINUSE = (WSABASEERR + 48)
Global Const WSAEADDRNOTAVAIL = (WSABASEERR + 49)
Global Const WSAENETDOWN = (WSABASEERR + 50)
Global Const WSAENETUNREACH = (WSABASEERR + 51)
Global Const WSAENETRESET = (WSABASEERR + 52)
Global Const WSAECONNABORTED = (WSABASEERR + 53)
Global Const WSAECONNRESET = (WSABASEERR + 54)
Global Const WSAENOBUFS = (WSABASEERR + 55)
Global Const WSAEISCONN = (WSABASEERR + 56)
Global Const WSAENOTCONN = (WSABASEERR + 57)
Global Const WSAESHUTDOWN = (WSABASEERR + 58)
Global Const WSAETOOMANYREFS = (WSABASEERR + 59)
Global Const WSAETIMEDOUT = (WSABASEERR + 60)
Global Const WSAECONNREFUSED = (WSABASEERR + 61)
Global Const WSAELOOP = (WSABASEERR + 62)
Global Const WSAENAMETOOLONG = (WSABASEERR + 63)
Global Const WSAEHOSTDOWN = (WSABASEERR + 64)
Global Const WSAEHOSTUNREACH = (WSABASEERR + 65)
Global Const WSAENOTEMPTY = (WSABASEERR + 66)
Global Const WSAEPROCLIM = (WSABASEERR + 67)
Global Const WSAEUSERS = (WSABASEERR + 68)
Global Const WSAEDQUOT = (WSABASEERR + 69)
Global Const WSAESTALE = (WSABASEERR + 70)
Global Const WSAEREMOTE = (WSABASEERR + 71)
'/*
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -