📄 idwinsock2.pas
字号:
EADDRINUSE = WSAEADDRINUSE;
{$EXTERNALSYM EADDRNOTAVAIL}
EADDRNOTAVAIL = WSAEADDRNOTAVAIL;
{$EXTERNALSYM ENETDOWN}
ENETDOWN = WSAENETDOWN;
{$EXTERNALSYM ENETUNREACH}
ENETUNREACH = WSAENETUNREACH;
{$EXTERNALSYM ENETRESET}
ENETRESET = WSAENETRESET;
{$EXTERNALSYM ECONNABORTED}
ECONNABORTED = WSAECONNABORTED;
{$EXTERNALSYM ECONNRESET}
ECONNRESET = WSAECONNRESET;
{$EXTERNALSYM ENOBUFS}
ENOBUFS = WSAENOBUFS;
{$EXTERNALSYM EISCONN}
EISCONN = WSAEISCONN;
{$EXTERNALSYM ENOTCONN}
ENOTCONN = WSAENOTCONN;
{$EXTERNALSYM ESHUTDOWN}
ESHUTDOWN = WSAESHUTDOWN;
{$EXTERNALSYM ETOOMANYREFS}
ETOOMANYREFS = WSAETOOMANYREFS;
{$EXTERNALSYM ETIMEDOUT}
ETIMEDOUT = WSAETIMEDOUT;
{$EXTERNALSYM ECONNREFUSED}
ECONNREFUSED = WSAECONNREFUSED;
{$EXTERNALSYM ELOOP}
ELOOP = WSAELOOP;
{$EXTERNALSYM ENAMETOOLONG}
ENAMETOOLONG = WSAENAMETOOLONG;
{$EXTERNALSYM EHOSTDOWN}
EHOSTDOWN = WSAEHOSTDOWN;
{$EXTERNALSYM EHOSTUNREACH}
EHOSTUNREACH = WSAEHOSTUNREACH;
{$EXTERNALSYM ENOTEMPTY}
ENOTEMPTY = WSAENOTEMPTY;
{$EXTERNALSYM EPROCLIM}
EPROCLIM = WSAEPROCLIM;
{$EXTERNALSYM EUSERS}
EUSERS = WSAEUSERS;
{$EXTERNALSYM EDQUOT}
EDQUOT = WSAEDQUOT;
{$EXTERNALSYM ESTALE}
ESTALE = WSAESTALE;
{$EXTERNALSYM EREMOTE}
EREMOTE = WSAEREMOTE;
{$EXTERNALSYM WSADESCRIPTION_LEN}
WSADESCRIPTION_LEN = 256;
{$EXTERNALSYM WSASYS_STATUS_LEN}
WSASYS_STATUS_LEN = 128;
type
{$EXTERNALSYM WSADATA}
WSADATA = packed record
wVersion : Word;
wHighVersion : Word;
{$IFDEF _WIN64}
iMaxSockets : Word;
iMaxUdpDg : Word;
lpVendorInfo : PChar;
szDescription : Array[0..wsadescription_len] of Char;
szSystemStatus : Array[0..wsasys_status_len] of Char;
{$ELSE}
szDescription : Array[0..wsadescription_len] of Char;
szSystemStatus : Array[0..wsasys_status_len] of Char;
iMaxSockets : Word;
iMaxUdpDg : Word;
lpVendorInfo : PChar;
{$ENDIF}
end;
TWSAData = WSADATA;
PWSAData = ^TWSAData;
{$EXTERNALSYM LPWSADATA}
LPWSADATA = PWSAData;
{ wsaoverlapped = Record
Internal: LongInt;
InternalHigh: LongInt;
Offset: LongInt;
OffsetHigh: LongInt;
hEvent: wsaevent;
end;}
{$EXTERNALSYM WSAOVERLAPPED}
WSAOVERLAPPED = TOverlapped;
TWSAOverlapped = WSAOVERLAPPED;
PWSAOverlapped = ^TWSAOverlapped;
{$EXTERNALSYM WSAOVERLAPPED}
LPWSAOVERLAPPED = PWSAOverlapped;
{ WinSock 2 extension -- WSABUF and QOS struct, include qos.h }
{ to pull in FLOWSPEC and related definitions }
{$EXTERNALSYM WSABUF}
WSABUF = packed record
len: u_long;{ the length of the buffer }
buf: PChar; { the pointer to the buffer }
end;
TWSABuf = WSABUF;
PWSABuf = ^TWSABuf;
{$EXTERNALSYM LPWSABUF}
LPWSABUF = PWSABUF;
{$EXTERNALSYM SERVICETYPE}
SERVICETYPE = LongInt;
TServiceType = SERVICETYPE;
{$EXTERNALSYM FLOWSPEC}
FLOWSPEC = packed record
TokenRate, // In Bytes/sec
TokenBucketSize, // In Bytes
PeakBandwidth, // In Bytes/sec
Latency, // In microseconds
DelayVariation : LongInt;// In microseconds
ServiceType : TServiceType;
MaxSduSize, MinimumPolicedSize : LongInt;// In Bytes
end;
TFlowSpec = FLOWSPEC;
{$EXTERNALSYM PFLOWSPEC}
PFLOWSPEC = ^TFlowSpec;
{$EXTERNALSYM LPFLOWSPEC}
LPFLOWSPEC = PFLOWSPEC;
{$EXTERNALSYM QOS}
QOS = packed record
SendingFlowspec: TFlowSpec; { the flow spec for data sending }
ReceivingFlowspec: TFlowSpec; { the flow spec for data receiving }
ProviderSpecific: TWSABuf; { additional provider specific stuff }
end;
TQualityOfService = QOS;
PQOS = ^QOS;
{$EXTERNALSYM LPQOS}
LPQOS = PQOS;
const
{$EXTERNALSYM SERVICETYPE_NOTRAFFIC}
SERVICETYPE_NOTRAFFIC = $00000000; // No data in this direction
{$EXTERNALSYM SERVICETYPE_BESTEFFORT}
SERVICETYPE_BESTEFFORT = $00000001; // Best Effort
{$EXTERNALSYM SERVICETYPE_CONTROLLEDLOAD}
SERVICETYPE_CONTROLLEDLOAD = $00000002; // Controlled Load
{$EXTERNALSYM SERVICETYPE_GUARANTEED}
SERVICETYPE_GUARANTEED = $00000003; // Guaranteed
{$EXTERNALSYM SERVICETYPE_NETWORK_UNAVAILABLE}
SERVICETYPE_NETWORK_UNAVAILABLE = $00000004; // Used to notify change to user
{$EXTERNALSYM SERVICETYPE_GENERAL_INFORMATION}
SERVICETYPE_GENERAL_INFORMATION = $00000005; // corresponds to "General Parameters" defined by IntServ
{$EXTERNALSYM SERVICETYPE_NOCHANGE}
SERVICETYPE_NOCHANGE = $00000006; // used to indicate that the flow spec contains no change from any previous one
// to turn on immediate traffic control, OR this flag with the ServiceType field in the FLOWSPEC
{$EXTERNALSYM SERVICE_IMMEDIATE_TRAFFIC_CONTROL}
SERVICE_IMMEDIATE_TRAFFIC_CONTROL = $80000000;
// WinSock 2 extension -- manifest constants for return values of the condition function
{$EXTERNALSYM CF_ACCEPT}
CF_ACCEPT = $0000;
{$EXTERNALSYM CF_REJECT}
CF_REJECT = $0001;
{$EXTERNALSYM CF_DEFER}
CF_DEFER = $0002;
// WinSock 2 extension -- manifest constants for shutdown()
{$EXTERNALSYM SD_RECEIVE}
SD_RECEIVE = $00;
{$EXTERNALSYM SD_SEND}
SD_SEND = $01;
{$EXTERNALSYM SD_BOTH}
SD_BOTH = $02;
// WinSock 2 extension -- data type and manifest constants for socket groups
{$EXTERNALSYM SG_UNCONSTRAINED_GROUP}
SG_UNCONSTRAINED_GROUP = $01;
{$EXTERNALSYM SG_CONSTRAINED_GROUP}
SG_CONSTRAINED_GROUP = $02;
type
{$EXTERNALSYM GROUP}
GROUP = DWORD;
// WinSock 2 extension -- data type for WSAEnumNetworkEvents()
{$EXTERNALSYM wsanetworkevents}
WSANETWORKEVENTS = record
lNetworkEvents: LongInt;
iErrorCode: Array[0..FD_MAX_EVENTS-1] of Integer;
end;
TWSANetworkEvents = WSANETWORKEVENTS;
PWSANetworkEvents = ^TWSANetworkEvents;
{$EXTERNALSYM LPWSANETWORKEVENTS}
LPWSANETWORKEVENTS = PWSANetworkEvents;
//TransmitFile types used for the TransmitFile API function in WinNT/2000/XP
{$NODEFINE _TRANSMIT_FILE_BUFFERS}
_TRANSMIT_FILE_BUFFERS = record
Head: Pointer;
HeadLength: DWORD;
Tail: Pointer;
TailLength: DWORD;
end;
{$NODEFINE TTransmitFileBuffers}
TTransmitFileBuffers = _TRANSMIT_FILE_BUFFERS;
{$NODEFINE PTransmitFileBuffers}
PTransmitFileBuffers = ^TTransmitFileBuffers;
{$NODEFINE TRANSMIT_FILE_BUFFERS}
TRANSMIT_FILE_BUFFERS = _TRANSMIT_FILE_BUFFERS;
// WinSock 2 extension -- WSAPROTOCOL_INFO structure
{
TGUID = packed record
D1: LongInt;
D2: Word;
D3: Word;
D4: Array[0..7] of Byte;
end; }
PGUID = ^TGUID;
{$EXTERNALSYM LPGUID}
LPGUID = PGUID;
// WinSock 2 extension -- WSAPROTOCOL_INFO manifest constants
const
{$EXTERNALSYM MAX_PROTOCOL_CHAIN}
MAX_PROTOCOL_CHAIN = 7;
{$EXTERNALSYM BASE_PROTOCOL}
BASE_PROTOCOL = 1;
{$EXTERNALSYM LAYERED_PROTOCOL}
LAYERED_PROTOCOL = 0;
{$EXTERNALSYM WSAPROTOCOL_LEN}
WSAPROTOCOL_LEN = 255;
type
{$EXTERNALSYM WSAPROTOCOLCHAIN}
WSAPROTOCOLCHAIN = record
ChainLen: Integer; // the length of the chain,
// length = 0 means layered protocol,
// length = 1 means base protocol,
// length > 1 means protocol chain
ChainEntries: Array[0..MAX_PROTOCOL_CHAIN-1] of LongInt; // a list of dwCatalogEntryIds
end;
TWSAProtocolChain = WSAPROTOCOLCHAIN;
{$EXTERNALSYM LPWSAPROTOCOLCHAIN}
LPWSAPROTOCOLCHAIN = ^TWSAProtocolChain;
type
{$EXTERNALSYM WSAPROTOCOL_INFOA}
WSAPROTOCOL_INFOA = record
dwServiceFlags1: DWORD;
dwServiceFlags2: DWORD;
dwServiceFlags3: DWORD;
dwServiceFlags4: DWORD;
dwProviderFlags: DWORD;
ProviderId: TGUID;
dwCatalogEntryId: DWORD;
ProtocolChain: TWSAProtocolChain;
iVersion: Integer;
iAddressFamily: Integer;
iMaxSockAddr: Integer;
iMinSockAddr: Integer;
iSocketType: Integer;
iProtocol: Integer;
iProtocolMaxOffset: Integer;
iNetworkByteOrder: Integer;
iSecurityScheme: Integer;
dwMessageSize: DWORD;
dwProviderReserved: DWORD;
szProtocol: Array[0..WSAPROTOCOL_LEN+1-1] of Char;
end;
TWSAProtocol_InfoA = WSAPROTOCOL_INFOA;
PWSAProtocol_InfoA = ^WSAPROTOCOL_INFOA;
{$EXTERNALSYM LPWSAPROTOCOL_INFOA}
LPWSAPROTOCOL_INFOA = PWSAProtocol_InfoA;
{$EXTERNALSYM WSAPROTOCOL_INFOW}
WSAPROTOCOL_INFOW = record
dwServiceFlags1: DWORD;
dwServiceFlags2: DWORD;
dwServiceFlags3: DWORD;
dwServiceFlags4: DWORD;
dwProviderFlags: DWORD;
ProviderId: TGUID;
dwCatalogEntryId: DWORD;
ProtocolChain: TWSAProtocolChain;
iVersion: Integer;
iAddressFamily: Integer;
iMaxSockAddr: Integer;
iMinSockAddr: Integer;
iSocketType: Integer;
iProtocol: Integer;
iProtocolMaxOffset: Integer;
iNetworkByteOrder: Integer;
iSecurityScheme: Integer;
dwMessageSize: DWORD;
dwProviderReserved: DWORD;
szProtocol: Array[0..WSAPROTOCOL_LEN+1-1] of WideChar;
end {TWSAProtocol_InfoW};
TWSAProtocol_InfoW = WSAPROTOCOL_INFOW;
PWSAProtocol_InfoW = ^TWSAProtocol_InfoW;
{$EXTERNALSYM LPWSAPROTOCOL_INFOW}
LPWSAPROTOCOL_INFOW = PWSAProtocol_InfoW;
{$EXTERNALSYM WSAPROTOCOL_INFO}
{$EXTERNALSYM LPWSAPROTOCOL_INFO}
{$IFDEF UNICODE}
WSAPROTOCOL_INFO = TWSAProtocol_InfoW;
TWSAProtocol_Info = TWSAProtocol_InfoW;
PWSAProtocol_Info = PWSAProtocol_InfoW;
LPWSAPROTOCOL_INFO = PWSAProtocol_InfoW;
{$ELSE}
WSAPROTOCOL_INFO = TWSAProtocol_InfoA;
TWSAProtocol_Info = TWSAProtocol_InfoA;
PWSAProtocol_Info = PWSAProtocol_InfoA;
LPWSAPROTOCOL_INFO = PWSAProtocol_InfoA;
{$ENDIF}
const
// flag bit definitions for dwProviderFlags
{$EXTERNALSYM PFL_MULTIPLE_PROTO_ENTRIES}
PFL_MULTIPLE_PROTO_ENTRIES = $00000001;
{$EXTERNALSYM PFL_RECOMMENTED_PROTO_ENTRY}
PFL_RECOMMENTED_PROTO_ENTRY = $00000002;
{$EXTERNALSYM PFL_HIDDEN}
PFL_HIDDEN = $00000004;
{$EXTERNALSYM PFL_MATCHES_PROTOCOL_ZERO}
PFL_MATCHES_PROTOCOL_ZERO = $00000008;
// flag bit definitions for dwServiceFlags1
{$EXTERNALSYM XP1_CONNECTIONLESS}
XP1_CONNECTIONLESS = $00000001;
{$EXTERNALSYM XP1_GUARANTEED_DELIVERY}
XP1_GUARANTEED_DELIVERY = $00000002;
{$EXTERNALSYM XP1_GUARANTEED_ORDER}
XP1_GUARANTEED_ORDER = $00000004;
{$EXTERNALSYM XP1_MESSAGE_ORIENTED}
XP1_MESSAGE_ORIENTED = $00000008;
{$EXTERNALSYM XP1_PSEUDO_STREAM}
XP1_PSEUDO_STREAM = $00000010;
{$EXTERNALSYM XP1_GRACEFUL_CLOSE}
XP1_GRACEFUL_CLOSE = $00000020;
{$EXTERNALSYM XP1_EXPEDITED_DATA}
XP1_EXPEDITED_DATA = $00000040;
{$EXTERNALSYM XP1_CONNECT_DATA}
XP1_CONNECT_DATA = $00000080;
{$EXTERNALSYM XP1_DISCONNECT_DATA}
XP1_DISCONNECT_DATA = $00000100;
{$EXTERNALSYM XP1_SUPPORT_BROADCAST}
XP1_SUPPORT_BROADCAST = $00000200;
{$EXTERNALSYM XP1_SUPPORT_MULTIPOINT}
XP1_SUPPORT_MULTIPOINT = $00000400;
{$EXTERNALSYM XP1_MULTIPOINT_CONTROL_PLANE}
XP1_MULTIPOINT_CONTROL_PLANE = $00000800;
{$EXTERNALSYM XP1_MULTIPOINT_DATA_PLANE}
XP1_MULTIPOINT_DATA_PLANE = $00001000;
{$EXTERNALSYM XP1_QOS_SUPPORTED}
XP1_QOS_SUPPORTED = $00002000;
{$EXTERNALSYM XP1_INTERRUPT}
XP1_INTERRUPT = $00004000;
{$EXTERNALSYM XP1_UNI_SEND}
XP1_UNI_SEND = $00008000;
{$EXTERNALSYM XP1_UNI_RECV}
XP1_UNI_RECV = $00010000;
{$EXTERNALSYM XP1_IFS_HANDLES}
XP1_IFS_HANDLES = $00020000;
{$EXTERNALSYM XP1_PARTIAL_MESSAGE}
XP1_PARTIAL_MESSAGE = $00040000;
{$EXTERNALSYM BIGENDIAN}
BIGENDIAN = $0000;
{$EXTERNALSYM LITTLEENDIAN}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -