📄 winsock2.pas
字号:
sp_family : u_short;
sp_protocol : u_short;
end;
PLinger = ^TLinger;
TLinger = packed record
l_onoff: u_short;
l_linger: u_short;
end;
const
INADDR_ANY = $00000000;
INADDR_LOOPBACK = $7F000001;
INADDR_BROADCAST = $FFFFFFFF;
INADDR_NONE = $FFFFFFFF;
ADDR_ANY = INADDR_ANY;
SOL_SOCKET = $ffff;
MSG_OOB = $1;
MSG_PEEK = $2;
MSG_DONTROUTE = $4;
MSG_PARTIAL = $8000;
MSG_INTERRUPT = $10;
MSG_MAXIOVLEN = 16;
MAXGETHOSTSTRUCT = 1024;
SOMAXCONN = $7fffffff;
FD_READ_BIT = 0;
FD_WRITE_BIT = 1;
FD_OOB_BIT = 2;
FD_ACCEPT_BIT = 3;
FD_CONNECT_BIT = 4;
FD_CLOSE_BIT = 5;
FD_QOS_BIT = 6;
FD_GROUP_QOS_BIT = 7;
FD_ROUTING_INTERFACE_CHANGE_BIT = 8;
FD_ADDRESS_LIST_CHANGE_BIT = 9;
FD_MAX_EVENTS = 10;
FD_READ = (1 shl FD_READ_BIT);
FD_WRITE = (1 shl FD_WRITE_BIT);
FD_OOB = (1 shl FD_OOB_BIT);
FD_ACCEPT = (1 shl FD_ACCEPT_BIT);
FD_CONNECT = (1 shl FD_CONNECT_BIT);
FD_CLOSE = (1 shl FD_CLOSE_BIT);
FD_QOS = (1 shl FD_QOS_BIT);
FD_GROUP_QOS = (1 shl FD_GROUP_QOS_BIT);
FD_ROUTING_INTERFACE_CHANGE = (1 shl FD_ROUTING_INTERFACE_CHANGE_BIT);
FD_ADDRESS_LIST_CHANGE = (1 shl FD_ADDRESS_LIST_CHANGE_BIT);
FD_ALL_EVENTS = (1 shl FD_MAX_EVENTS) - 1;
WSABASEERR = 10000;
WSAEINTR = WSABASEERR+ 4;
WSAEBADF = WSABASEERR+ 9;
WSAEACCES = WSABASEERR+ 13;
WSAEFAULT = WSABASEERR+ 14;
WSAEINVAL = WSABASEERR+ 22;
WSAEMFILE = WSABASEERR+ 24;
WSAEWOULDBLOCK = WSABASEERR+ 35;
WSAEINPROGRESS = WSABASEERR+ 36;
WSAEALREADY = WSABASEERR+ 37;
WSAENOTSOCK = WSABASEERR+ 38;
WSAEDESTADDRREQ = WSABASEERR+ 39;
WSAEMSGSIZE = WSABASEERR+ 40;
WSAEPROTOTYPE = WSABASEERR+ 41;
WSAENOPROTOOPT = WSABASEERR+ 42;
WSAEPROTONOSUPPORT = WSABASEERR+ 43;
WSAESOCKTNOSUPPORT = WSABASEERR+ 44;
WSAEOPNOTSUPP = WSABASEERR+ 45;
WSAEPFNOSUPPORT = WSABASEERR+ 46;
WSAEAFNOSUPPORT = WSABASEERR+ 47;
WSAEADDRINUSE = WSABASEERR+ 48;
WSAEADDRNOTAVAIL = WSABASEERR+ 49;
WSAENETDOWN = WSABASEERR+ 50;
WSAENETUNREACH = WSABASEERR+ 51;
WSAENETRESET = WSABASEERR+ 52;
WSAECONNABORTED = WSABASEERR+ 53;
WSAECONNRESET = WSABASEERR+ 54;
WSAENOBUFS = WSABASEERR+ 55;
WSAEISCONN = WSABASEERR+ 56;
WSAENOTCONN = WSABASEERR+ 57;
WSAESHUTDOWN = WSABASEERR+ 58;
WSAETOOMANYREFS = WSABASEERR+ 59;
WSAETIMEDOUT = WSABASEERR+ 60;
WSAECONNREFUSED = WSABASEERR+ 61;
WSAELOOP = WSABASEERR+ 62;
WSAENAMETOOLONG = WSABASEERR+ 63;
WSAEHOSTDOWN = WSABASEERR+ 64;
WSAEHOSTUNREACH = WSABASEERR+ 65;
WSAENOTEMPTY = WSABASEERR+ 66;
WSAEPROCLIM = WSABASEERR+ 67;
WSAEUSERS = WSABASEERR+ 68;
WSAEDQUOT = WSABASEERR+ 69;
WSAESTALE = WSABASEERR+ 70;
WSAEREMOTE = WSABASEERR+ 71;
WSASYSNOTREADY = WSABASEERR+ 91;
WSAVERNOTSUPPORTED = WSABASEERR+ 92;
WSANOTINITIALISED = WSABASEERR+ 93;
WSAEDISCON = WSABASEERR+101;
WSAENOMORE = WSABASEERR+102;
WSAECANCELLED = WSABASEERR+103;
WSAEINVALIDPROCTABLE = WSABASEERR+104;
WSAEINVALIDPROVIDER = WSABASEERR+105;
WSAEPROVIDERFAILEDINIT = WSABASEERR+106;
WSASYSCALLFAILURE = WSABASEERR+107;
WSASERVICE_NOT_FOUND = WSABASEERR+108;
WSATYPE_NOT_FOUND = WSABASEERR+109;
WSA_E_NO_MORE = WSABASEERR+110;
WSA_E_CANCELLED = WSABASEERR+111;
WSAEREFUSED = WSABASEERR+112;
WSAHOST_NOT_FOUND = WSABASEERR+1001;
HOST_NOT_FOUND = WSAHOST_NOT_FOUND;
WSATRY_AGAIN = WSABASEERR+1002;
TRY_AGAIN = WSATRY_AGAIN;
WSANO_RECOVERY = WSABASEERR+1003;
NO_RECOVERY = WSANO_RECOVERY;
WSANO_DATA = WSABASEERR+1004;
NO_DATA = WSANO_DATA;
WSANO_ADDRESS = WSANO_DATA;
NO_ADDRESS = WSANO_ADDRESS;
WSA_QOS_RECEIVERS = WSABASEERR+1005;
WSA_QOS_SENDERS = WSABASEERR+1006;
WSA_QOS_NO_SENDERS = WSABASEERR+1007;
WSA_QOS_NO_RECEIVERS = WSABASEERR+1008;
WSA_QOS_REQUEST_CONFIRMED = WSABASEERR+1009;
WSA_QOS_ADMISSION_FAILURE = WSABASEERR+1010;
WSA_QOS_POLICY_FAILURE = WSABASEERR+1011;
WSA_QOS_BAD_STYLE = WSABASEERR+1012;
WSA_QOS_BAD_OBJECT = WSABASEERR+1013;
WSA_QOS_TRAFFIC_CTRL_ERROR = WSABASEERR+1014;
WSA_QOS_GENERIC_ERROR = WSABASEERR+1015;
WSA_QOS_ESERVICETYPE = WSABASEERR+1016;
WSA_QOS_EFLOWSPEC = WSABASEERR+1017;
WSA_QOS_EPROVSPECBUF = WSABASEERR+1018;
WSA_QOS_EFILTERSTYLE = WSABASEERR+1019;
WSA_QOS_EFILTERTYPE = WSABASEERR+1020;
WSA_QOS_EFILTERCOUNT = WSABASEERR+1021;
WSA_QOS_EOBJLENGTH = WSABASEERR+1022;
WSA_QOS_EFLOWCOUNT = WSABASEERR+1023;
WSA_QOS_EUNKOWNPSOBJ = WSABASEERR+1024;
WSA_QOS_EPOLICYOBJ = WSABASEERR+1025;
WSA_QOS_EFLOWDESC = WSABASEERR+1026;
WSA_QOS_EPSFLOWSPEC = WSABASEERR+1027;
WSA_QOS_EPSFILTERSPEC = WSABASEERR+1028;
WSA_QOS_ESDMODEOBJ = WSABASEERR+1029;
WSA_QOS_ESHAPERATEOBJ = WSABASEERR+1030;
WSA_QOS_RESERVED_PETYPE = WSABASEERR+1031;
WSA_IO_PENDING = ERROR_IO_PENDING;
WSA_IO_INCOMPLETE = ERROR_IO_INCOMPLETE;
WSA_INVALID_HANDLE = ERROR_INVALID_HANDLE;
WSA_INVALID_PARAMETER = ERROR_INVALID_PARAMETER;
WSA_NOT_ENOUGH_MEMORY = ERROR_NOT_ENOUGH_MEMORY;
WSA_OPERATION_ABORTED = ERROR_OPERATION_ABORTED;
WSA_INVALID_EVENT = WSAEVENT(nil);
WSA_MAXIMUM_WAIT_EVENTS = MAXIMUM_WAIT_OBJECTS;
WSA_WAIT_FAILED = $ffffffff;
WSA_WAIT_EVENT_0 = WAIT_OBJECT_0;
WSA_WAIT_IO_COMPLETION = WAIT_IO_COMPLETION;
WSA_WAIT_TIMEOUT = WAIT_TIMEOUT;
WSA_INFINITE = INFINITE;
WSADESCRIPTION_LEN = 256;
WSASYS_STATUS_LEN = 128;
type
PWSAData = ^TWSAData;
TWSAData = packed record
wVersion : Word;
wHighVersion : Word;
szDescription : Array[0..WSADESCRIPTION_LEN] of Char;
szSystemStatus : Array[0..WSASYS_STATUS_LEN] of Char;
iMaxSockets : Word;
iMaxUdpDg : Word;
lpVendorInfo : PChar;
end;
WSAOVERLAPPED = TOverlapped;
TWSAOverlapped = WSAOverlapped;
PWSAOverlapped = ^WSAOverlapped;
LPWSAOVERLAPPED = PWSAOverlapped;
WSABUF = packed record
len: U_LONG;
buf: PChar;
end;
PWSABUF = ^WSABUF;
LPWSABUF = PWSABUF;
TServiceType = LongInt;
TFlowSpec = packed record
TokenRate,
TokenBucketSize,
PeakBandwidth,
Latency,
DelayVariation : LongInt;
ServiceType : TServiceType;
MaxSduSize, MinimumPolicedSize : LongInt;
end;
PFlowSpec = ^TFLOWSPEC;
QOS = packed record
SendingFlowspec: TFlowSpec;
ReceivingFlowspec: TFlowSpec;
ProviderSpecific: WSABUF;
end;
TQualityOfService = QOS;
PQOS = ^QOS;
LPQOS = PQOS;
const
SERVICETYPE_NOTRAFFIC = $00000000;
SERVICETYPE_BESTEFFORT = $00000001;
SERVICETYPE_CONTROLLEDLOAD = $00000002;
SERVICETYPE_GUARANTEED = $00000003;
SERVICETYPE_NETWORK_UNAVAILABLE = $00000004;
SERVICETYPE_GENERAL_INFORMATION = $00000005;
SERVICETYPE_NOCHANGE = $00000006;
SERVICE_IMMEDIATE_TRAFFIC_CONTROL = $80000000;
CF_ACCEPT = $0000;
CF_REJECT = $0001;
CF_DEFER = $0002;
SD_RECEIVE = $00;
SD_SEND = $01;
SD_BOTH = $02;
SG_UNCONSTRAINED_GROUP = $01;
SG_CONSTRAINED_GROUP = $02;
type
GROUP = DWORD;
TWSANetworkEvents = record
lNetworkEvents: LongInt;
iErrorCode: Array[0..FD_MAX_EVENTS-1] of Integer;
end;
PWSANetworkEvents = ^TWSANetworkEvents;
LPWSANetworkEvents = PWSANetworkEvents;
TGUID = packed record
D1: LongInt;
D2: Word;
D3: Word;
D4: Array[0..7] of Byte;
end;
PGUID = ^TGUID;
LPGUID = PGUID;
const
MAX_PROTOCOL_CHAIN = 7;
BASE_PROTOCOL = 1;
LAYERED_PROTOCOL = 0;
WSAPROTOCOL_LEN = 255;
type
TWSAProtocolChain = record
ChainLen: Integer;
ChainEntries: Array[0..MAX_PROTOCOL_CHAIN-1] of LongInt;
end;
type
TWSAProtocol_InfoA = record
dwServiceFlags1: LongInt;
dwServiceFlags2: LongInt;
dwServiceFlags3: LongInt;
dwServiceFlags4: LongInt;
dwProviderFlags: LongInt;
ProviderId: TGUID;
dwCatalogEntryId: LongInt;
ProtocolChain: TWSAProtocolChain;
iVersion: Integer;
iAddressFamily: Integer;
iMaxSockAddr: Integer;
iMinSockAddr: Integer;
iSocketType: Integer;
iProtocol: Integer;
iProtocolMaxOffset: Integer;
iNetworkByteOrder: Integer;
iSecurityScheme: Integer;
dwMessageSize: LongInt;
dwProviderReserved: LongInt;
szProtocol: Array[0..WSAPROTOCOL_LEN+1-1] of Char;
end;
PWSAProtocol_InfoA = ^TWSAProtocol_InfoA;
LPWSAProtocol_InfoA = PWSAProtocol_InfoA;
TWSAProtocol_InfoW = record
dwServiceFlags1: LongInt;
dwServiceFlags2: LongInt;
dwServiceFlags3: LongInt;
dwServiceFlags4: LongInt;
dwProviderFlags: LongInt;
ProviderId: TGUID;
dwCatalogEntryId: LongInt;
ProtocolChain: TWSAProtocolChain;
iVersion: Integer;
iAddressFamily: Integer;
iMaxSockAddr: Integer;
iMinSockAddr: Integer;
iSocketType: Integer;
iProtocol: Integer;
iProtocolMaxOffset: Integer;
iNetworkByteOrder: Integer;
iSecurityScheme: Integer;
dwMessageSize: LongInt;
dwProviderReserved: LongInt;
szProtocol: Array[0..WSAPROTOCOL_LEN+1-1] of WideChar;
end {TWSAProtocol_InfoW};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -