?? ws2tcpip.inc
字號:
{
WS2TCPIP.H - WinSock2 Extension for TCP/IP protocols
This file contains TCP/IP specific information for use
by WinSock2 compatible applications.
Copyright (c) 1995-1999 Microsoft Corporation
To provide the backward compatibility, all the TCP/IP
specific definitions that were included in the WINSOCK.H
file are now included in WINSOCK2.H file. WS2TCPIP.H
file includes only the definitions introduced in the
"WinSock 2 Protocol-Specific Annex" document.
Rev 0.3 Nov 13, 1995
Rev 0.4 Dec 15, 1996
}
// Argument structure for IP_ADD_MEMBERSHIP and IP_DROP_MEMBERSHIP
type
ip_mreq = packed record
imr_multiaddr : TInAddr; // IP multicast address of group
imr_interface : TInAddr; // local IP address of interface
end;
// TCP/IP specific Ioctl codes
const
SIO_GET_INTERFACE_LIST = IOC_OUT or (SizeOf(Longint) shl 16) or (Ord('t') shl 8) or 127;
// New IOCTL with address size independent address array
SIO_GET_INTERFACE_LIST_EX = IOC_OUT or (SizeOf(Longint) shl 16) or (Ord('t') shl 8) or 126;
// Options for use with [gs]etsockopt at the IP level.
IP_OPTIONS = 1; // set/get IP options
IP_HDRINCL = 2; // header is included with data
IP_TOS = 3; // IP type of service and preced
IP_TTL = 4; // IP time to live
IP_MULTICAST_IF = 9; // set/get IP multicast i/f
IP_MULTICAST_TTL = 10; // set/get IP multicast ttl
IP_MULTICAST_LOOP = 11; // set/get IP multicast loopback
IP_ADD_MEMBERSHIP = 12; // add an IP group membership
IP_DROP_MEMBERSHIP = 13; // drop an IP group membership
IP_DONTFRAGMENT = 14; // don't fragment IP datagrams
IP_DEFAULT_MULTICAST_TTL = 1; // normally limit m'casts to 1 hop
IP_DEFAULT_MULTICAST_LOOP = 1; // normally hear sends if a member
IP_MAX_MEMBERSHIPS = 20; // per socket; must fit in one mbuf
// Option to use with [gs]etsockopt at the IPPROTO_UDP level
UDP_NOCHECKSUM = 1;
// Option to use with [gs]etsockopt at the IPPROTO_TCP level
TCP_EXPEDITED_1122 = $0002;
// IPv6 definitions
type
IN_ADDR6 = packed record
s6_addr : array[0..15] of u_char; // IPv6 address
end;
TIn6Addr = IN_ADDR6;
PIn6Addr = ^IN_ADDR6;
IN6_ADDR = IN_ADDR6;
PIN6_ADDR = ^IN_ADDR6;
LPIN6_ADDR = ^IN_ADDR6;
// Old IPv6 socket address structure (retained for sockaddr_gen definition below)
SOCKADDR_IN6_OLD = packed record
sin6_family : Smallint; // AF_INET6
sin6_port : u_short; // Transport level port number
sin6_flowinfo : u_long; // IPv6 flow information
sin6_addr : IN_ADDR6; // IPv6 address
end;
// IPv6 socket address structure, RFC 2553
SOCKADDR_IN6 = packed record
sin6_family : Smallint; // AF_INET6
sin6_port : u_short; // Transport level port number
sin6_flowinfo : u_long; // IPv6 flow information
sin6_addr : IN_ADDR6; // IPv6 address
sin6_scope_id : u_long; // set of interfaces for a scope
end;
TSockAddrIn6 = SOCKADDR_IN6;
PSockAddrIn6 = ^SOCKADDR_IN6;
PSOCKADDR_IN6 = ^SOCKADDR_IN6;
LPSOCKADDR_IN6 = ^SOCKADDR_IN6;
sockaddr_gen = packed record
case Integer of
1 : ( Address : SOCKADDR; );
2 : ( AddressIn : SOCKADDR_IN; );
3 : ( AddressIn6 : SOCKADDR_IN6_OLD; );
end;
// Structure to keep interface specific information
INTERFACE_INFO = packed record
iiFlags : u_long; // Interface flags
iiAddress : sockaddr_gen; // Interface address
iiBroadcastAddress : sockaddr_gen; // Broadcast address
iiNetmask : sockaddr_gen; // Network mask
end;
TINTERFACE_INFO = INTERFACE_INFO;
LPINTERFACE_INFO = ^INTERFACE_INFO;
// New structure that does not have dependency on the address size
INTERFACE_INFO_EX = packed record
iiFlags : u_long; // Interface flags
iiAddress : SOCKET_ADDRESS; // Interface address
iiBroadcastAddress : SOCKET_ADDRESS; // Broadcast address
iiNetmask : SOCKET_ADDRESS; // Network mask
end;
TINTERFACE_INFO_EX = INTERFACE_INFO_EX;
LPINTERFACE_INFO_EX = ^INTERFACE_INFO_EX;
// Possible flags for the iiFlags - bitmask
const
IFF_UP = $00000001; // Interface is up
IFF_BROADCAST = $00000002; // Broadcast is supported
IFF_LOOPBACK = $00000004; // this is loopback interface
IFF_POINTTOPOINT = $00000008; // this is point-to-point interface
IFF_MULTICAST = $00000010; // multicast is supported
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -