📄 idwinsock2.pas
字号:
{$EXTERNALSYM IPPORT_LOGINSERVER}
IPPORT_LOGINSERVER = 513;
{$EXTERNALSYM IPPORT_CMDSERVER}
IPPORT_CMDSERVER = 514;
{$EXTERNALSYM IPPORT_EFSSERVER}
IPPORT_EFSSERVER = 520;
// UNIX UDP sockets
{$EXTERNALSYM IPPORT_BIFFUDP}
IPPORT_BIFFUDP = 512;
{$EXTERNALSYM IPPORT_WHOSERVER}
IPPORT_WHOSERVER = 513;
{$EXTERNALSYM IPPORT_ROUTESERVER}
IPPORT_ROUTESERVER = 520;
// Ports < IPPORT_RESERVED are reserved for privileged processes (e.g. root).
{$EXTERNALSYM ipport_reserved}
IPPORT_RESERVED =1024;
// Link numbers
{$EXTERNALSYM IMPLINK_IP}
IMPLINK_IP = 155;
{$EXTERNALSYM IMPLINK_LOWEXPER}
IMPLINK_LOWEXPER = 156;
{$EXTERNALSYM IMPLINK_HIGHEXPER}
IMPLINK_HIGHEXPER = 158;
{$EXTERNALSYM TF_DISCONNECT}
TF_DISCONNECT = $01;
{$EXTERNALSYM TF_REUSE_SOCKET}
TF_REUSE_SOCKET = $02;
{$EXTERNALSYM tf_write_behind}
TF_WRITE_BEHIND = $04;
// This is used instead of -1, since the TSocket type is unsigned.
{$EXTERNALSYM INVALID_SOCKET}
INVALID_SOCKET = TSocket(not(0));
{$EXTERNALSYM SOCKET_ERROR}
SOCKET_ERROR = -1;
// The following may be used in place of the address family, socket type, or
// protocol in a call to WSASocket to indicate that the corresponding value
// should be taken from the supplied WSAPROTOCOL_INFO structure instead of the
// parameter itself.
{$EXTERNALSYM FROM_PROTOCOL_INFO}
FROM_PROTOCOL_INFO = -1;
// Types
{$EXTERNALSYM SOCK_STREAM}
SOCK_STREAM = 1; { stream socket }
{$EXTERNALSYM SOCK_DGRAM}
SOCK_DGRAM = 2; { datagram socket }
{$EXTERNALSYM SOCK_RAW}
SOCK_RAW = 3; { raw-protocol interface }
{$EXTERNALSYM SOCK_RDM}
SOCK_RDM = 4; { reliably-delivered message }
{$EXTERNALSYM SOCK_SEQPACKET}
SOCK_SEQPACKET = 5; { sequenced packet stream }
// option flags per-socket.
{$EXTERNALSYM SO_DEBUG}
SO_DEBUG = $0001; // turn on debugging info recording
{$EXTERNALSYM SO_ACCEPTCONN}
SO_ACCEPTCONN = $0002; // socket has had listen()
{$EXTERNALSYM SO_REUSEADDR}
SO_REUSEADDR = $0004; // allow local address reuse
{$EXTERNALSYM SO_KEEPALIVE}
SO_KEEPALIVE = $0008; // keep connections alive
{$EXTERNALSYM SO_DONTROUTE}
SO_DONTROUTE = $0010; // just use interface addresses
{$EXTERNALSYM SO_BROADCAST}
SO_BROADCAST = $0020; // permit sending of broadcast msgs
{$EXTERNALSYM SO_USELOOPBACK}
SO_USELOOPBACK = $0040; // bypass hardware when possible
{$EXTERNALSYM SO_LINGER}
SO_LINGER = $0080; // linger on close if data present
{$EXTERNALSYM SO_OOBINLINE}
SO_OOBINLINE = $0100; // leave received OOB data in line
{$EXTERNALSYM SO_DONTLINGER}
SO_DONTLINGER = not SO_LINGER;
{$EXTERNALSYM SO_EXCLUSIVEADDRUSE}
SO_EXCLUSIVEADDRUSE = not SO_REUSEADDR; // disallow local address reuse
// additional options.
{$EXTERNALSYM SO_SNDBUF}
SO_SNDBUF = $1001; // send buffer size
{$EXTERNALSYM SO_RCVBUF}
SO_RCVBUF = $1002; // receive buffer size
{$EXTERNALSYM SO_SNDLOWAT}
SO_SNDLOWAT = $1003; // send low-water mark
{$EXTERNALSYM SO_RCVLOWAT}
SO_RCVLOWAT = $1004; // receive low-water mark
{$EXTERNALSYM SO_SNDTIMEO}
SO_SNDTIMEO = $1005; // send timeout
{$EXTERNALSYM SO_RCVTIMEO}
SO_RCVTIMEO = $1006; // receive timeout
{$EXTERNALSYM SO_ERROR}
SO_ERROR = $1007; // get error status and clear
{$EXTERNALSYM SO_TYPE}
SO_TYPE = $1008; // get socket type
// options for connect and disconnect data and options.
// used only by non-tcp/ip transports such as DECNet, OSI TP4, etc.
{$EXTERNALSYM SO_CONNDATA}
SO_CONNDATA = $7000;
{$EXTERNALSYM SO_CONNOPT}
SO_CONNOPT = $7001;
{$EXTERNALSYM SO_DISCDATA}
SO_DISCDATA = $7002;
{$EXTERNALSYM SO_DISCOPT}
SO_DISCOPT = $7003;
{$EXTERNALSYM SO_CONNDATALEN}
SO_CONNDATALEN = $7004;
{$EXTERNALSYM SO_CONNOPTLEN}
SO_CONNOPTLEN = $7005;
{$EXTERNALSYM SO_DISCDATALEN}
SO_DISCDATALEN = $7006;
{$EXTERNALSYM SO_DISCOPTLEN}
SO_DISCOPTLEN = $7007;
// option for opening sockets for synchronous access.
{$EXTERNALSYM SO_OPENTYPE}
SO_OPENTYPE = $7008;
{$EXTERNALSYM SO_SYNCHRONOUS_ALERT}
SO_SYNCHRONOUS_ALERT = $10;
{$EXTERNALSYM SO_SYNCHRONOUS_NONALERT}
SO_SYNCHRONOUS_NONALERT = $20;
// other nt-specific options.
{$EXTERNALSYM SO_MAXDG}
SO_MAXDG = $7009;
{$EXTERNALSYM SO_MAXPATHDG}
SO_MAXPATHDG = $700A;
{$EXTERNALSYM SO_UPDATE_ACCEPT_CONTEXT}
SO_UPDATE_ACCEPT_CONTEXT = $700B;
{$EXTERNALSYM SO_CONNECT_TIME}
SO_CONNECT_TIME = $700C;
// tcp options.
{$EXTERNALSYM TCP_NODELAY}
TCP_NODELAY = $0001;
{$EXTERNALSYM TCP_BSDURGENT}
TCP_BSDURGENT = $7000;
// winsock 2 extension -- new options
{$EXTERNALSYM SO_GROUP_ID}
SO_GROUP_ID = $2001; // ID of a socket group
{$EXTERNALSYM SO_GROUP_PRIORITY}
SO_GROUP_PRIORITY = $2002; // the relative priority within a group
{$EXTERNALSYM SO_MAX_MSG_SIZE}
SO_MAX_MSG_SIZE = $2003; // maximum message size
{$EXTERNALSYM SO_PROTOCOL_INFOA}
SO_PROTOCOL_INFOA = $2004; // WSAPROTOCOL_INFOA structure
{$EXTERNALSYM SO_PROTOCOL_INFOW}
SO_PROTOCOL_INFOW = $2005; // WSAPROTOCOL_INFOW structure
{$EXTERNALSYM SO_PROTOCOL_INFO}
{$IFDEF UNICODE}
SO_PROTOCOL_INFO = SO_PROTOCOL_INFOW;
{$ELSE}
SO_PROTOCOL_INFO = SO_PROTOCOL_INFOA;
{$ENDIF}
{$EXTERNALSYM PVD_CONFIG}
PVD_CONFIG = $3001; // configuration info for service provider
{$EXTERNALSYM SO_CONDITIONAL_ACCEPT}
SO_CONDITIONAL_ACCEPT = $3002; // enable true conditional accept:
// connection is not ack-ed to the
// other side until conditional
// function returns CF_ACCEPT
// Address families.
{$EXTERNALSYM AF_UNSPEC}
AF_UNSPEC = 0; // unspecified
{$EXTERNALSYM AF_UNIX}
AF_UNIX = 1; // local to host (pipes, portals)
{$EXTERNALSYM AF_INET}
AF_INET = 2; // internetwork: UDP, TCP, etc.
{$EXTERNALSYM AF_IMPLINK}
AF_IMPLINK = 3; // arpanet imp addresses
{$EXTERNALSYM AF_PUP}
AF_PUP = 4; // pup protocols: e.g. BSP
{$EXTERNALSYM AF_CHAOS}
AF_CHAOS = 5; // mit CHAOS protocols
{$EXTERNALSYM AF_IPX}
AF_IPX = 6; // ipx and SPX
{$EXTERNALSYM AF_NS}
AF_NS = AF_IPX; // xerOX NS protocols
{$EXTERNALSYM AF_ISO}
AF_ISO = 7; // iso protocols
{$EXTERNALSYM AF_OSI}
AF_OSI = AF_ISO; // osi is ISO
{$EXTERNALSYM AF_ECMA}
AF_ECMA = 8; // european computer manufacturers
{$EXTERNALSYM AF_DATAKIT}
AF_DATAKIT = 9; // datakit protocols
{$EXTERNALSYM AF_CCITT}
AF_CCITT = 10; // cciTT protocols, X.25 etc
{$EXTERNALSYM AF_SNA}
AF_SNA = 11; // ibm SNA
{$EXTERNALSYM AF_DECNET}
AF_DECNET = 12; // decnet
{$EXTERNALSYM AF_DLI}
AF_DLI = 13; // direct data link interface
{$EXTERNALSYM AF_LAT}
AF_LAT = 14; // lat
{$EXTERNALSYM AF_HYLINK}
AF_HYLINK = 15; // nsc Hyperchannel
{$EXTERNALSYM AF_APPLETALK}
AF_APPLETALK = 16; // appleTalk
{$EXTERNALSYM AF_NETBIOS}
AF_NETBIOS = 17; // netBios-style addresses
{$EXTERNALSYM AF_VOICEVIEW}
AF_VOICEVIEW = 18; // voiceView
{$EXTERNALSYM AF_FIREFOX}
AF_FIREFOX = 19; // fireFox
{$EXTERNALSYM AF_UNKNOWN1}
AF_UNKNOWN1 = 20; // somebody is using this!
{$EXTERNALSYM AF_BAN}
AF_BAN = 21; // banyan
{$EXTERNALSYM AF_ATM}
AF_ATM = 22; // native ATM Services
{$EXTERNALSYM AF_INET6}
AF_INET6 = 23; // internetwork Version 6
{$EXTERNALSYM AF_CLUSTER}
AF_CLUSTER = 24; // microsoft Wolfpack
{$EXTERNALSYM AF_12844}
AF_12844 = 25; // ieeE 1284.4 WG AF
{$EXTERNALSYM AF_IRDA}
AF_IRDA = 26; // irdA
{$EXTERNALSYM AF_NETDES}
AF_NETDES = 28; // network Designers OSI & gateway enabled protocols
{$EXTERNALSYM AF_TCNPROCESS}
AF_TCNPROCESS = 29;
{$EXTERNALSYM AF_TCNMESSAGE}
AF_TCNMESSAGE = 30;
{$EXTERNALSYM AF_ICLFXBM}
AF_ICLFXBM = 31;
{$EXTERNALSYM AF_MAX}
AF_MAX = 32;
// protocol families, same as address families for now.
{$EXTERNALSYM PF_UNSPEC}
PF_UNSPEC = AF_UNSPEC;
{$EXTERNALSYM PF_UNIX}
PF_UNIX = AF_UNIX;
{$EXTERNALSYM PF_INET}
PF_INET = AF_INET;
{$EXTERNALSYM PF_IMPLINK}
PF_IMPLINK = AF_IMPLINK;
{$EXTERNALSYM PF_PUP}
PF_PUP = AF_PUP;
{$EXTERNALSYM PF_CHAOS}
PF_CHAOS = AF_CHAOS;
{$EXTERNALSYM PF_NS}
PF_NS = AF_NS;
{$EXTERNALSYM PF_IPX}
PF_IPX = AF_IPX;
{$EXTERNALSYM PF_ISO}
PF_ISO = AF_ISO;
{$EXTERNALSYM PF_OSI}
PF_OSI = AF_OSI;
{$EXTERNALSYM PF_ECMA}
PF_ECMA = AF_ECMA;
{$EXTERNALSYM PF_DATAKIT}
PF_DATAKIT = AF_DATAKIT;
{$EXTERNALSYM PF_CCITT}
PF_CCITT = AF_CCITT;
{$EXTERNALSYM PF_SNA}
PF_SNA = AF_SNA;
{$EXTERNALSYM PF_DECNET}
PF_DECNET = AF_DECNET;
{$EXTERNALSYM PF_DLI}
PF_DLI = AF_DLI;
{$EXTERNALSYM PF_LAT}
PF_LAT = AF_LAT;
{$EXTERNALSYM PF_HYLINK}
PF_HYLINK = AF_HYLINK;
{$EXTERNALSYM PF_APPLETALK}
PF_APPLETALK = AF_APPLETALK;
{$EXTERNALSYM PF_VOICEVIEW}
PF_VOICEVIEW = AF_VOICEVIEW;
{$EXTERNALSYM PF_FIREFOX}
PF_FIREFOX = AF_FIREFOX;
{$EXTERNALSYM PF_UNKNOWN1}
PF_UNKNOWN1 = AF_UNKNOWN1;
{$EXTERNALSYM pf_ban}
PF_BAN = AF_BAN;
{$EXTERNALSYM PF_ATM}
PF_ATM = AF_ATM;
{$EXTERNALSYM PF_INET6}
PF_INET6 = AF_INET6;
{$EXTERNALSYM PF_MAX}
PF_MAX = AF_MAX;
type
{$NODEFINE SunB}
SunB = packed record
s_b1, s_b2, s_b3, s_b4: u_char;
end;
{$NODEFINE SunW}
SunW = packed record
s_w1, s_w2: u_short;
end;
{$EXTERNALSYM in_addr}
in_addr = packed record
case integer of
0: (S_un_b: SunB);
1: (S_un_w: SunW);
2: (S_addr: u_long);
end;
TInAddr = in_addr;
PInAddr = ^TInAddr;
// Structure used by kernel to store most addresses.
{$EXTERNALSYM sockaddr_in}
sockaddr_in = packed record
case Integer of
0: (sin_family : u_short;
sin_port : u_short;
sin_addr : TInAddr;
sin_zero : array[0..7] of Char);
1: (sa_family : u_short;
sa_data : array[0..13] of Char)
end;
TSockAddrIn = sockaddr_in;
PSockAddrIn = ^TSockAddrIn;
TSockAddr = TSockAddrIn;
{$EXTERNALSYM SOCKADDR}
SOCKADDR = TSockAddr;
{$EXTERNALSYM PSOCKADDR}
PSOCKADDR = ^TSockAddr;
// Structure used by kernel to pass protocol information in raw sockets.
{$EXTERNALSYM sockproto}
sockproto = packed record
sp_family : u_short;
sp_protocol : u_short;
end;
TSockProto = sockproto;
PSockProto = ^TSockProto;
// Structure used for manipulating linger option.
{$EXTERNALSYM linger}
linger = packed record
l_onoff: u_short;
l_linger: u_short;
end;
TLinger = linger;
{$EXTERNALSYM PLINGER}
PLINGER = ^TLinger;
{$EXTERNALSYM LPLINGER}
LPLINGER = PLINGER;
const
{$EXTERNALSYM INADDR_ANY}
INADDR_ANY = $00000000;
{$EXTERNALSYM INADDR_LOOPBACK}
INADDR_LOOPBACK = $7F000001;
{$EXTERNALSYM INADDR_BROADCAST}
INADDR_BROADCAST = $FFFFFFFF;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -