📄 jwawinsock2.pas
字号:
//
_SS_PAD1SIZE = _SS_ALIGNSIZE - SizeOf(short);
{$EXTERNALSYM _SS_PAD1SIZE}
_SS_PAD2SIZE = _SS_MAXSIZE - (SizeOf(short) + _SS_PAD1SIZE + _SS_ALIGNSIZE);
{$EXTERNALSYM _SS_PAD2SIZE}
type
sockaddr_storage = record
ss_family: short; // Address family.
__ss_pad1: array [0.._SS_PAD1SIZE - 1] of char; // 6 byte pad, this is to make
// implementation specific pad up to
// alignment field that follows explicit
// in the data structure.
__ss_align: Int64; // Field to force desired structure.
__ss_pad2: array [0.._SS_PAD2SIZE - 1] of char; // 112 byte pad to achieve desired size;
// _SS_MAXSIZE value minus size of
// ss_family, __ss_pad1, and
// __ss_align fields is 112.
end;
{$EXTERNALSYM sockaddr_storage}
TSockAddrStorage = sockaddr_storage;
PSockAddrStorage = ^sockaddr_storage;
//
// Structure used by kernel to pass protocol
// information in raw sockets.
//
sockproto = record
sp_family: u_short; // address family
sp_protocol: u_short; // protocol
end;
{$EXTERNALSYM sockproto}
TSockProto = sockproto;
PSockProto = ^sockproto;
//
// Protocol families, same as address families for now.
//
const
PF_UNSPEC = AF_UNSPEC;
{$EXTERNALSYM PF_UNSPEC}
PF_UNIX = AF_UNIX;
{$EXTERNALSYM PF_UNIX}
PF_INET = AF_INET;
{$EXTERNALSYM PF_INET}
PF_IMPLINK = AF_IMPLINK;
{$EXTERNALSYM PF_IMPLINK}
PF_PUP = AF_PUP;
{$EXTERNALSYM PF_PUP}
PF_CHAOS = AF_CHAOS;
{$EXTERNALSYM PF_CHAOS}
PF_NS = AF_NS;
{$EXTERNALSYM PF_NS}
PF_IPX = AF_IPX;
{$EXTERNALSYM PF_IPX}
PF_ISO = AF_ISO;
{$EXTERNALSYM PF_ISO}
PF_OSI = AF_OSI;
{$EXTERNALSYM PF_OSI}
PF_ECMA = AF_ECMA;
{$EXTERNALSYM PF_ECMA}
PF_DATAKIT = AF_DATAKIT;
{$EXTERNALSYM PF_DATAKIT}
PF_CCITT = AF_CCITT;
{$EXTERNALSYM PF_CCITT}
PF_SNA = AF_SNA;
{$EXTERNALSYM PF_SNA}
PF_DECnet = AF_DECnet;
{$EXTERNALSYM PF_DECnet}
PF_DLI = AF_DLI;
{$EXTERNALSYM PF_DLI}
PF_LAT = AF_LAT;
{$EXTERNALSYM PF_LAT}
PF_HYLINK = AF_HYLINK;
{$EXTERNALSYM PF_HYLINK}
PF_APPLETALK = AF_APPLETALK;
{$EXTERNALSYM PF_APPLETALK}
PF_VOICEVIEW = AF_VOICEVIEW;
{$EXTERNALSYM PF_VOICEVIEW}
PF_FIREFOX = AF_FIREFOX;
{$EXTERNALSYM PF_FIREFOX}
PF_UNKNOWN1 = AF_UNKNOWN1;
{$EXTERNALSYM PF_UNKNOWN1}
PF_BAN = AF_BAN;
{$EXTERNALSYM PF_BAN}
PF_ATM = AF_ATM;
{$EXTERNALSYM PF_ATM}
PF_INET6 = AF_INET6;
{$EXTERNALSYM PF_INET6}
PF_MAX = AF_MAX;
{$EXTERNALSYM PF_MAX}
//
// Structure used for manipulating linger option.
//
type
linger = record
l_onoff: u_short; // option on/off
l_linger: u_short; // linger time
end;
{$EXTERNALSYM linger}
TLinger = linger;
PLinger = ^linger;
//
// Level number for (get/set)sockopt() to apply to socket itself.
//
const
SOL_SOCKET = $ffff; // options for socket level
{$EXTERNALSYM SOL_SOCKET}
//
// Maximum queue length specifiable by listen.
//
SOMAXCONN = $7fffffff;
{$EXTERNALSYM SOMAXCONN}
MSG_OOB = $1; // process out-of-band data
{$EXTERNALSYM MSG_OOB}
MSG_PEEK = $2; // peek at incoming message
{$EXTERNALSYM MSG_PEEK}
MSG_DONTROUTE = $4; // send without using routing tables
{$EXTERNALSYM MSG_DONTROUTE}
MSG_PARTIAL = $8000; // partial send or recv for message xport
{$EXTERNALSYM MSG_PARTIAL}
//
// WinSock 2 extension -- new flags for WSASend(), WSASendTo(), WSARecv() and
// WSARecvFrom()
//
MSG_INTERRUPT = $10; // send/recv in the interrupt context
{$EXTERNALSYM MSG_INTERRUPT}
MSG_MAXIOVLEN = 16;
{$EXTERNALSYM MSG_MAXIOVLEN}
//
// Define constant based on rfc883, used by gethostbyxxxx() calls.
//
MAXGETHOSTSTRUCT = 1024;
{$EXTERNALSYM MAXGETHOSTSTRUCT}
//
// WinSock 2 extension -- bit values and indices for FD_XXX network events
//
FD_READ_BIT = 0;
{$EXTERNALSYM FD_READ_BIT}
FD_READ = (1 shl FD_READ_BIT);
{$EXTERNALSYM FD_READ}
FD_WRITE_BIT = 1;
{$EXTERNALSYM FD_WRITE_BIT}
FD_WRITE = (1 shl FD_WRITE_BIT);
{$EXTERNALSYM FD_WRITE}
FD_OOB_BIT = 2;
{$EXTERNALSYM FD_OOB_BIT}
FD_OOB = (1 shl FD_OOB_BIT);
{$EXTERNALSYM FD_OOB}
FD_ACCEPT_BIT = 3;
{$EXTERNALSYM FD_ACCEPT_BIT}
FD_ACCEPT = (1 shl FD_ACCEPT_BIT);
{$EXTERNALSYM FD_ACCEPT}
FD_CONNECT_BIT = 4;
{$EXTERNALSYM FD_CONNECT_BIT}
FD_CONNECT = (1 shl FD_CONNECT_BIT);
{$EXTERNALSYM FD_CONNECT}
FD_CLOSE_BIT = 5;
{$EXTERNALSYM FD_CLOSE_BIT}
FD_CLOSE = (1 shl FD_CLOSE_BIT);
{$EXTERNALSYM FD_CLOSE}
FD_QOS_BIT = 6;
{$EXTERNALSYM FD_QOS_BIT}
FD_QOS = (1 shl FD_QOS_BIT);
{$EXTERNALSYM FD_QOS}
FD_GROUP_QOS_BIT = 7;
{$EXTERNALSYM FD_GROUP_QOS_BIT}
FD_GROUP_QOS = (1 shl FD_GROUP_QOS_BIT);
{$EXTERNALSYM FD_GROUP_QOS}
FD_ROUTING_INTERFACE_CHANGE_BIT = 8;
{$EXTERNALSYM FD_ROUTING_INTERFACE_CHANGE_BIT}
FD_ROUTING_INTERFACE_CHANGE = (1 shl FD_ROUTING_INTERFACE_CHANGE_BIT);
{$EXTERNALSYM FD_ROUTING_INTERFACE_CHANGE}
FD_ADDRESS_LIST_CHANGE_BIT = 9;
{$EXTERNALSYM FD_ADDRESS_LIST_CHANGE_BIT}
FD_ADDRESS_LIST_CHANGE = (1 shl FD_ADDRESS_LIST_CHANGE_BIT);
{$EXTERNALSYM FD_ADDRESS_LIST_CHANGE}
FD_MAX_EVENTS = 10;
{$EXTERNALSYM FD_MAX_EVENTS}
FD_ALL_EVENTS = ((1 shl FD_MAX_EVENTS) - 1);
{$EXTERNALSYM FD_ALL_EVENTS}
//
// All Windows Sockets error constants are biased by WSABASEERR from
// the "normal"
//
WSABASEERR = 10000;
{$EXTERNALSYM WSABASEERR}
//
// Windows Sockets definitions of regular Microsoft C error constants
//
WSAEINTR = (WSABASEERR+4);
{$EXTERNALSYM WSAEINTR}
WSAEBADF = (WSABASEERR+9);
{$EXTERNALSYM WSAEBADF}
WSAEACCES = (WSABASEERR+13);
{$EXTERNALSYM WSAEACCES}
WSAEFAULT = (WSABASEERR+14);
{$EXTERNALSYM WSAEFAULT}
WSAEINVAL = (WSABASEERR+22);
{$EXTERNALSYM WSAEINVAL}
WSAEMFILE = (WSABASEERR+24);
{$EXTERNALSYM WSAEMFILE}
//
// Windows Sockets definitions of regular Berkeley error constants
//
WSAEWOULDBLOCK = (WSABASEERR+35);
{$EXTERNALSYM WSAEWOULDBLOCK}
WSAEINPROGRESS = (WSABASEERR+36);
{$EXTERNALSYM WSAEINPROGRESS}
WSAEALREADY = (WSABASEERR+37);
{$EXTERNALSYM WSAEALREADY}
WSAENOTSOCK = (WSABASEERR+38);
{$EXTERNALSYM WSAENOTSOCK}
WSAEDESTADDRREQ = (WSABASEERR+39);
{$EXTERNALSYM WSAEDESTADDRREQ}
WSAEMSGSIZE = (WSABASEERR+40);
{$EXTERNALSYM WSAEMSGSIZE}
WSAEPROTOTYPE = (WSABASEERR+41);
{$EXTERNALSYM WSAEPROTOTYPE}
WSAENOPROTOOPT = (WSABASEERR+42);
{$EXTERNALSYM WSAENOPROTOOPT}
WSAEPROTONOSUPPORT = (WSABASEERR+43);
{$EXTERNALSYM WSAEPROTONOSUPPORT}
WSAESOCKTNOSUPPORT = (WSABASEERR+44);
{$EXTERNALSYM WSAESOCKTNOSUPPORT}
WSAEOPNOTSUPP = (WSABASEERR+45);
{$EXTERNALSYM WSAEOPNOTSUPP}
WSAEPFNOSUPPORT = (WSABASEERR+46);
{$EXTERNALSYM WSAEPFNOSUPPORT}
WSAEAFNOSUPPORT = (WSABASEERR+47);
{$EXTERNALSYM WSAEAFNOSUPPORT}
WSAEADDRINUSE = (WSABASEERR+48);
{$EXTERNALSYM WSAEADDRINUSE}
WSAEADDRNOTAVAIL = (WSABASEERR+49);
{$EXTERNALSYM WSAEADDRNOTAVAIL}
WSAENETDOWN = (WSABASEERR+50);
{$EXTERNALSYM WSAENETDOWN}
WSAENETUNREACH = (WSABASEERR+51);
{$EXTERNALSYM WSAENETUNREACH}
WSAENETRESET = (WSABASEERR+52);
{$EXTERNALSYM WSAENETRESET}
WSAECONNABORTED = (WSABASEERR+53);
{$EXTERNALSYM WSAECONNABORTED}
WSAECONNRESET = (WSABASEERR+54);
{$EXTERNALSYM WSAECONNRESET}
WSAENOBUFS = (WSABASEERR+55);
{$EXTERNALSYM WSAENOBUFS}
WSAEISCONN = (WSABASEERR+56);
{$EXTERNALSYM WSAEISCONN}
WSAENOTCONN = (WSABASEERR+57);
{$EXTERNALSYM WSAENOTCONN}
WSAESHUTDOWN = (WSABASEERR+58);
{$EXTERNALSYM WSAESHUTDOWN}
WSAETOOMANYREFS = (WSABASEERR+59);
{$EXTERNALSYM WSAETOOMANYREFS}
WSAETIMEDOUT = (WSABASEERR+60);
{$EXTERNALSYM WSAETIMEDOUT}
WSAECONNREFUSED = (WSABASEERR+61);
{$EXTERNALSYM WSAECONNREFUSED}
WSAELOOP = (WSABASEERR+62);
{$EXTERNALSYM WSAELOOP}
WSAENAMETOOLONG = (WSABASEERR+63);
{$EXTERNALSYM WSAENAMETOOLONG}
WSAEHOSTDOWN = (WSABASEERR+64);
{$EXTERNALSYM WSAEHOSTDOWN}
WSAEHOSTUNREACH = (WSABASEERR+65);
{$EXTERNALSYM WSAEHOSTUNREACH}
WSAENOTEMPTY = (WSABASEERR+66);
{$EXTERNALSYM WSAENOTEMPTY}
WSAEPROCLIM = (WSABASEERR+67);
{$EXTERNALSYM WSAEPROCLIM}
WSAEUSERS = (WSABASEERR+68);
{$EXTERNALSYM WSAEUSERS}
WSAEDQUOT = (WSABASEERR+69);
{$EXTERNALSYM WSAEDQUOT}
WSAESTALE = (WSABASEERR+70);
{$EXTERNALSYM WSAESTALE}
WSAEREMOTE = (WSABASEERR+71);
{$EXTERNALSYM WSAEREMOTE}
//
// Extended Windows Sockets error constant definitions
//
WSASYSNOTREADY = (WSABASEERR+91);
{$EXTERNALSYM WSASYSNOTREADY}
WSAVERNOTSUPPORTED = (WSABASEERR+92);
{$EXTERNALSYM WSAVERNOTSUPPORTED}
WSANOTINITIALISED = (WSABASEERR+93);
{$EXTERNALSYM WSANOTINITIALISED}
WSAEDISCON = (WSABASEERR+101);
{$EXTERNALSYM WSAEDISCON}
WSAENOMORE = (WSABASEERR+102);
{$EXTERNALSYM WSAENOMORE}
WSAECANCELLED = (WSABASEERR+103);
{$EXTERNALSYM WSAECANCELLED}
WSAEINVALIDPROCTABLE = (WSABASEERR+104);
{$EXTERNALSYM WSAEINVALIDPROCTABLE}
WSAEINVALIDPROVIDER = (WSABASEERR+105);
{$EXTERNALSYM WSAEINVALIDPROVIDER}
WSAEPROVIDERFAILEDINIT = (WSABASEERR+106);
{$EXTERNALSYM WSAEPROVIDERFAILEDINIT}
WSASYSCALLFAILURE = (WSABASEERR+107);
{$EXTERNALSYM WSASYSCALLFAILURE}
WSASERVICE_NOT_FOUND = (WSABASEERR+108);
{$EXTERNALSYM WSASERVICE_NOT_FOUND}
WSATYPE_NOT_FOUND = (WSABASEERR+109);
{$EXTERNALSYM WSATYPE_NOT_FOUND}
WSA_E_NO_MORE = (WSABASEERR+110);
{$EXTERNALSYM WSA_E_NO_MORE}
WSA_E_CANCELLED = (WSABASEERR+111);
{$EXTERNALSYM WSA_E_CANCELLED}
WSAEREFUSED = (WSABASEERR+112);
{$EXTERNALSYM WSAEREFUSED}
//
// 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
WSAHOST_NOT_FOUND = (WSABASEERR+1001);
{$EXTERNALSYM WSAHOST_NOT_FOUND}
// Non-Authoritative: Host not found, or SERVERFAIL
WSATRY_AGAIN = (WSABASEERR+1002);
{$EXTERNALSYM WSATRY_AGAIN}
// Non-recoverable errors, FORMERR, REFUSED, NOTIMP
WSANO_RECOVERY = (WSABASEERR+1003);
{$EXTERNALSYM WSANO_RECOVERY}
// Valid name, no data record of requested type
WSANO_DATA = (WSABASEERR+1004);
{$EXTERNALSYM WSANO_DATA}
//
// Define QOS related error return codes
//
//
WSA_QOS_RECEIVERS = (WSABASEERR + 1005); // at least one Reserve has arrived
{$EXTERNALSYM WSA_QOS_RECEIVERS}
WSA_QOS_SENDERS = (WSABASEERR + 1006); // at least one Path has arrived
{$EXTERNALSYM WSA_QOS_SENDERS}
WSA_QOS_NO_SENDERS = (WSABASEERR + 1007); // there are no senders
{$EXTERNALSYM WSA_QOS_NO_SENDERS}
WSA_QOS_NO_RECEIVERS = (WSABASEERR + 1008); // there are no receivers
{$EXTERNALSYM WSA_QOS_NO_RECEIVERS}
WSA_QOS_REQUEST_CONFIRMED = (WSABASEERR + 1009); // Reserve has been confirmed
{$EXTERNALSYM WSA_QOS_REQUEST_CONFIRMED}
WSA_QOS_ADMISSION_FAILURE = (WSABASEERR + 1010); // error due to lack of resources
{$EXTERNALSYM WSA_QOS_ADMISSION_FAILURE}
WSA_QOS_POLICY_FAILURE = (WSABASEERR + 1011); // rejected for administrative reasons - bad credentials
{$EXTERNALSYM WSA_QOS_POLICY_FAILURE}
WSA_QOS_BAD_STYLE = (WSABASEERR + 1012); // unknown or conflicting style
{$EXTERNALSYM WSA_QOS_BAD_STYLE}
WSA_QOS_BAD_OBJECT = (WSABASEERR + 1013); // problem with some part of the filterspec or providerspecific buffer in general
{$EXTERNALSYM WSA_QOS_BAD_OBJECT}
WSA_QOS_TRAFFIC_CTRL_ERROR = (WSABASEERR + 1014); // problem with some part of the flowspec
{$EXTERNALSYM WSA_QOS_TRAFFIC_CTRL_ERROR}
WSA_QOS_GENERIC_ERROR = (WSABASEERR + 1015); // general error
{$EXTERNALSYM WSA_QOS_GENERIC_ERROR}
WSA_QOS_ESERVICETYPE = (WSABASEERR + 1016); // invalid service type in flowspec
{$EXTERNALSYM WSA_QOS_ESERVICETYPE}
WSA_QOS_EFLOWSPEC = (WSABASEERR + 1017); // invalid flowspec
{$EXTERNALSYM WSA_QOS_EFLOWSPEC}
WSA_QOS_EPROVSPECBUF = (WSABASEERR + 1018); // invalid provider specific buffer
{$EXTERNALSYM WSA_QOS_EPROVSPECBUF}
WSA_QOS_EFILTERSTYLE = (WSABASEERR + 1019); // invalid filter style
{$EXTERNALSYM WSA_QOS_EFILTERSTYLE}
WSA_QOS_EFILTERTYPE = (WSABASEERR + 1020); // invalid filter type
{$EXTERNALSYM WSA_QOS_EFILTERTYPE}
WSA_QOS_EFILTERCOUNT = (WSABASEERR + 1021); // incorrect number of filters
{$EXTERNALSYM WSA_QOS_EFILTERCOUNT}
WSA_QOS_EOBJLENGTH = (WSABASEERR + 1022); // invalid object length
{$EXTERNALSYM WSA_QOS_EOBJLENGTH}
WSA_QOS_EFLOWCOUNT = (WSABASEERR + 1023); // incorrect number of flows
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -