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

📄 winsock.bas

📁 《Windows网络编程技术》随书源码.rar
💻 BAS
📖 第 1 页 / 共 3 页
字号:
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 + -