Renamed from Winsock.pas 6/12/1998 Paul Rice to avoid conflicts with others' work.} { } { Delphi Runtime Library } { Windows 32bit API Interface Unit } { } { Copyright (c) 1996 Borland International } { } {*******************************************************} //-----------------------------------------------------// // Modified by Voïvode // //-----------------------------------------------------//
accept - Socket function prototypes
bind -
closesocket -
connect -
gethostbyaddr -
gethostbyname -
gethostname -
getpeername -
getprotobyname -
getprotobynumber -
getservbyname -
getservbyport -
getsockname -
getsockopt -
htonl -
htons -
inet_addr -
inet_ntoa - PInAddr;} { TInAddr
ioctlsocket -
listen -
ntohl -
ntohs -
OOBchar - New procedure to allow the change of the OOB char (called in Sockets.
recv -
recvfrom -
select -
send -
sendto -
setsockopt -
shutdown -
socket -
TransmitFile -
WSAAsyncGetHostByAddr -
WSAAsyncGetHostByName -
WSAAsyncGetProtoByName -
WSAAsyncGetProtoByNumber -
WSAAsyncGetServByName -
WSAAsyncGetServByPort -
WSAAsyncSelect -
WSACancelAsyncRequest -
WSACancelBlockingCall -
WSACleanup -
WSAGetAsyncBuflen -
WSAGetAsyncError -
WSAGetLastError -
WSAGetSelectError -
WSAGetSelectEvent -
WSAIsBlocking -
WSAMakeSelectReply -
WSAMakeSyncReply -
WSARecvEx -
WSASetBlockingHook -
WSASetLastError -
WSAStartup -
WSAUnhookBlockingHook -
PFDSet
PHostEnt
PInAddr
PLinger
PNetEnt
PProtoEnt
PServEnt
PSockAddr
PSockAddrIn
PSockProto
PTimeVal
PTransmitFileBuffers
PWSAData
SunB
SunW
TFDSet
THostEnt
TInAddr
TLinger
TNetEnt
TProtoEnt
TServEnt
TSockAddr
TSockAddrIn
TSocket
TSockProto
TTimeVal
TTransmitFileBuffers
TWSAData
u_char
u_int
u_long
u_short
AF_APPLETALK
AF_CCITT
AF_CHAOS
AF_DATAKIT
AF_DECnet
AF_DLI
AF_ECMA
AF_HYLINK
AF_IMPLINK
AF_INET
AF_IPX
AF_ISO
AF_LAT
AF_MAX
AF_NETBIOS
AF_NS
AF_OSI
AF_PUP
AF_SNA
AF_UNIX
AF_UNSPEC
AF_VOICEVIEW
EADDRINUSE
EADDRNOTAVAIL
EAFNOSUPPORT
EALREADY
ECONNABORTED
ECONNREFUSED
ECONNRESET
EDESTADDRREQ
EDQUOT
EHOSTDOWN
EHOSTUNREACH
EINPROGRESS
EISCONN
ELOOP
EMSGSIZE
ENAMETOOLONG
ENETDOWN
ENETRESET
ENETUNREACH
ENOBUFS
ENOPROTOOPT
ENOTCONN
ENOTEMPTY
ENOTSOCK
EOPNOTSUPP
EPFNOSUPPORT
EPROCLIM
EPROTONOSUPPORT
EPROTOTYPE
EREMOTE
ESHUTDOWN
ESOCKTNOSUPPORT
ESTALE
ETIMEDOUT
ETOOMANYREFS
EUSERS
EWOULDBLOCK
FD_ACCEPT
FD_CLOSE
FD_CONNECT
FD_OOB
FD_READ
FD_SETSIZE
FD_WRITE
FIOASYNC
FIONBIO
FIONREAD
HOST_NOT_FOUND
IMPLINK_HIGHEXPER
IMPLINK_IP
IMPLINK_LOWEXPER
INADDR_ANY
INADDR_BROADCAST
INADDR_LOOPBACK
INADDR_NONE
INVALID_SOCKET
IOCPARM_MASK
IOC_IN
IOC_INOUT
IOC_OUT
IOC_VOID
IPPORT_BIFFUDP
IPPORT_CMDSERVER
IPPORT_DAYTIME
IPPORT_DISCARD
IPPORT_ECHO
IPPORT_EFSSERVER
IPPORT_EXECSERVER
IPPORT_FINGER
IPPORT_FTP
IPPORT_LOGINSERVER
IPPORT_MTP
IPPORT_NAMESERVER
IPPORT_NETSTAT
IPPORT_RESERVED
IPPORT_RJE
IPPORT_ROUTESERVER
IPPORT_SMTP
IPPORT_SUPDUP
IPPORT_SYSTAT
IPPORT_TELNET
IPPORT_TFTP
IPPORT_TIMESERVER
IPPORT_TTYLINK
IPPORT_WHOIS
IPPORT_WHOSERVER
IPPROTO_GGP
IPPROTO_ICMP
IPPROTO_IDP
IPPROTO_IP
IPPROTO_MAX
IPPROTO_ND
IPPROTO_PUP
IPPROTO_RAW
IPPROTO_TCP
IPPROTO_UDP
IP_ADD_MEMBERSHIP
IP_DEFAULT_MULTICAST_LOOP
IP_DEFAULT_MULTICAST_TTL
IP_DROP_MEMBERSHIP
IP_MAX_MEMBERSHIPS
IP_MULTICAST_IF
IP_MULTICAST_LOOP
IP_MULTICAST_TTL
IP_OPTIONS
MAXGETHOSTSTRUCT
MSG_DONTROUTE
MSG_MAXIOVLEN
MSG_OOB
MSG_PARTIAL
MSG_PEEK
NO_ADDRESS
NO_DATA
NO_RECOVERY
PF_APPLETALK
PF_CCITT
PF_CHAOS
PF_DATAKIT
PF_DECnet
PF_DLI
PF_ECMA
PF_HYLINK
PF_IMPLINK
PF_INET
PF_IPX
PF_ISO
PF_LAT
PF_MAX
PF_NS
PF_OSI
PF_PUP
PF_SNA
PF_UNIX
PF_UNSPEC
PF_VOICEVIEW
SOCKET_ERROR
SOCK_DGRAM
SOCK_RAW
SOCK_RDM
SOCK_SEQPACKET
SOCK_STREAM
SOL_SOCKET
SOMAXCONN
SO_ACCEPTCONN
SO_BROADCAST
SO_CONNDATA
SO_CONNDATALEN
SO_CONNOPT
SO_CONNOPTLEN
SO_DEBUG
SO_DISCDATA
SO_DISCDATALEN
SO_DISCOPT
SO_DISCOPTLEN
SO_DONTLINGER
SO_DONTROUTE
SO_ERROR
SO_KEEPALIVE
SO_LINGER
SO_MAXDG
SO_MAXPATHDG
SO_OOBINLINE
SO_OPENTYPE
SO_RCVBUF
SO_RCVLOWAT
SO_RCVTIMEO
SO_REUSEADDR
SO_SNDBUF
SO_SNDLOWAT
SO_SNDTIMEO
SO_SYNCHRONOUS_ALERT
SO_SYNCHRONOUS_NONALERT
SO_TYPE
SO_USELOOPBACK
TCP_BSDURGENT
TCP_NODELAY
TRY_AGAIN
WSABASEERR
WSADESCRIPTION_LEN
WSAEACCES
WSAEADDRINUSE
WSAEADDRNOTAVAIL
WSAEAFNOSUPPORT
WSAEALREADY
WSAEBADF
WSAECONNABORTED
WSAECONNREFUSED
WSAECONNRESET
WSAEDESTADDRREQ
WSAEDISCON
WSAEDQUOT
WSAEFAULT
WSAEHOSTDOWN
WSAEHOSTUNREACH
WSAEINPROGRESS
WSAEINTR
WSAEINVAL
WSAEISCONN
WSAELOOP
WSAEMFILE
WSAEMSGSIZE
WSAENAMETOOLONG
WSAENETDOWN
WSAENETRESET
WSAENETUNREACH
WSAENOBUFS
WSAENOPROTOOPT
WSAENOTCONN
WSAENOTEMPTY
WSAENOTSOCK
WSAEOPNOTSUPP
WSAEPFNOSUPPORT
WSAEPROCLIM
WSAEPROTONOSUPPORT
WSAEPROTOTYPE
WSAEREMOTE
WSAESHUTDOWN
WSAESOCKTNOSUPPORT
WSAESTALE
WSAETIMEDOUT
WSAETOOMANYREFS
WSAEUSERS
WSAEWOULDBLOCK
WSAHOST_NOT_FOUND
WSANOTINITIALISED
WSANO_ADDRESS
WSANO_DATA
WSANO_RECOVERY
WSASYSNOTREADY
WSASYS_STATUS_LEN
WSATRY_AGAIN
WSAVERNOTSUPPORTED
function accept(s: TSocket; var addr: TSockAddr; var addrlen: Integer): TSocket;
Socket function prototypes
function bind(s: TSocket; var addr: TSockAddr; namelen: Integer): Integer;
function closesocket(s: TSocket): Integer;
function connect(s: TSocket; var name: TSockAddr; namelen: Integer): Integer;
function gethostbyaddr(addr: Pointer; len, struct: Integer): PHostEnt;
function gethostbyname(name: PChar): PHostEnt;
function gethostname(name: PChar; len: Integer): Integer;
function getpeername(s: TSocket; var name: TSockAddr; var namelen: Integer): Integer;
function getprotobyname(name: PChar): PProtoEnt;
function getprotobynumber(proto: Integer): PProtoEnt;
function getservbyname(name, proto: PChar): PServEnt;
function getservbyport(port: Integer; proto: PChar): PServEnt;
function getsockname(s: TSocket; var name: TSockAddr; var namelen: Integer): Integer;
function getsockopt(s: TSocket; level, optname: Integer; optval: PChar; var optlen: Integer): Integer;
function htonl(hostlong: u_long): u_long;
function htons(hostshort: u_short): u_short;
function inet_addr(cp: PChar): u_long;
function inet_ntoa(inaddr: TInAddr): PChar;
PInAddr;} { TInAddr
function ioctlsocket(s: TSocket; cmd: Longint; var arg: u_long): Integer;
function listen(s: TSocket; backlog: Integer): Integer;
function ntohl(netlong: u_long): u_long;
function ntohs(netshort: u_short): u_short;
procedure OOBchar(newValue : Integer);
New procedure to allow the change of the OOB char (called in Sockets.pas) Change made by Voïvode
function recv(s: TSocket; var Buf; len, flags: Integer): Integer;
function recvfrom(s: TSocket; var Buf; len, flags: Integer;
var from: TSockAddr; var fromlen: Integer): Integer;
function select(nfds: Integer; readfds, writefds, exceptfds: PFDSet;
timeout: PTimeVal): Longint;
function send(s: TSocket; var Buf; len, flags: Integer): Integer;
function sendto(s: TSocket; var Buf; len, flags: Integer; var addrto: TSockAddr;
tolen: Integer): Integer;
function setsockopt(s: TSocket; level, optname: Integer; optval: PChar;
optlen: Integer): Integer;
function shutdown(s: TSocket; how: Integer): Integer;
function socket(af, struct, protocol: Integer): TSocket;
function TransmitFile(hSocket: TSocket; hFile: THandle; nNumberOfBytesToWrite: DWORD;
nNumberOfBytesPerSend: DWORD; lpOverlapped: POverlapped;
lpTransmitBuffers: PTransmitFileBuffers; dwReserved: DWORD): BOOL;
function WSAAsyncGetHostByAddr(HWindow: HWND; wMsg: u_int; addr: PChar;
len, struct: Integer; buf: PChar; buflen: Integer): THandle;
function WSAAsyncGetHostByName(HWindow: HWND; wMsg: u_int;
name, buf: PChar; buflen: Integer): THandle;
function WSAAsyncGetProtoByName(HWindow: HWND; wMsg: u_int;
name, buf: PChar; buflen: Integer): THandle;
function WSAAsyncGetProtoByNumber(HWindow: HWND; wMsg: u_int; number: Integer;
buf: PChar; buflen: Integer): THandle;
function WSAAsyncGetServByName(HWindow: HWND; wMsg: u_int;
name, proto, buf: PChar; buflen: Integer): THandle;
function WSAAsyncGetServByPort( HWindow: HWND; wMsg, port: u_int;
proto, buf: PChar; buflen: Integer): THandle;
function WSAAsyncSelect(s: TSocket; HWindow: HWND; wMsg: u_int; lEvent: Longint): Integer;
function WSACancelAsyncRequest(hAsyncTaskHandle: THandle): Integer;
function WSACancelBlockingCall: Integer;
function WSACleanup: Integer;
function WSAGetAsyncBuflen(Param: Longint): Word;
function WSAGetAsyncError(Param: Longint): Word;
function WSAGetLastError: Integer;
function WSAGetSelectError(Param: Longint): Word;
function WSAGetSelectEvent(Param: Longint): Word;
function WSAIsBlocking: BOOL;
function WSAMakeSelectReply(Event, Error: Word): Longint;
function WSAMakeSyncReply(Buflen, Error: Word): Longint;
function WSARecvEx(s: TSocket; var buf; len: Integer; var flags: Integer): Integer;
function WSASetBlockingHook(lpBlockFunc: TFarProc): TFarProc;
procedure WSASetLastError(iError: Integer);
function WSAStartup(wVersionRequired: word; var WSData: TWSAData): Integer;
function WSAUnhookBlockingHook: Integer;
PFDSet = ^TFDSet
PHostEnt = ^THostEnt
set/clear async i/o
PInAddr = ^TInAddr
PLinger = ^TLinger
Structure used for manipulating linger option.
PNetEnt = ^TNetEnt
PProtoEnt = ^TProtoEnt
PServEnt = ^TServEnt
PSockAddr = ^TSockAddr
Structure used by kernel to store most addresses.
PSockAddrIn = ^TSockAddrIn
PSockProto = ^TSockProto
Structure used by kernel to pass protocol information in raw sockets.
PTimeVal = ^TTimeVal
PTransmitFileBuffers = ^TTransmitFileBuffers
PWSAData = ^TWSAData
SunB = record
s_b1 : u_char;
s_b2 : u_char;
s_b3 : u_char;
s_b4 : u_char;
end;
SunW = record
s_w1 : u_short;
s_w2 : u_short;
end;
TFDSet = record
fd_count : u_int;
fd_array : array[0..FD_SETSIZE-1] of TSocket;
end;
THostEnt = record
h_name : PChar;
h_aliases : ^PChar;
h_addrtype : Smallint;
h_length : Smallint;
h_addr_list : ^PChar;
end;
TInAddr = record
end;
TLinger = record
l_onoff : u_short;
l_linger : u_short;
end;
TNetEnt = record
n_name : PChar;
n_aliases : ^PChar;
n_addrtype : Smallint;
n_net : u_long;
end;
TProtoEnt = record
p_name : PChar;
p_aliases : ^Pchar;
p_proto : Smallint;
end;
TServEnt = record
s_name : PChar;
s_aliases : ^PChar;
s_port : Smallint;
s_proto : PChar;
end;
TSockAddr = TSockAddrIn
TSockAddrIn = record
end;
TSocket = u_int
The new type to be used in all
instances which refer to sockets.
TSockProto = record
sp_family : u_short;
sp_protocol : u_short;
end;
TTimeVal = record
tv_sec : Longint;
tv_usec : Longint;
end;
TTransmitFileBuffers = record
Head : Pointer;
HeadLength : DWORD;
Tail : Pointer;
TailLength : DWORD;
end;
TWSAData = 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;
u_char = Char
u_int = Integer
u_long = Longint
u_short = Word
AF_APPLETALK = 16
NSC Hyperchannel
AF_CCITT = 10
datakit protocols
AF_CHAOS = 5
pup protocols: e.g. BSP
AF_DATAKIT = 9
european computer manufacturers
AF_DECnet = 12
IBM SNA
AF_DLI = 13
DECnet
AF_ECMA = 8
OSI is ISO
AF_HYLINK = 15
LAT
AF_IMPLINK = 3
internetwork: UDP, TCP, etc.
AF_INET = 2
local to host (pipes, portals)
AF_IPX = 6
mit CHAOS protocols
AF_ISO = 7
XEROX NS protocols
AF_LAT = 14
Direct data link interface
AF_MAX = 19
VoiceView
AF_NETBIOS = 17
AppleTalk
AF_NS = 6
IPX and SPX
AF_OSI = AF_ISO
ISO protocols
AF_PUP = 4
arpanet imp addresses
AF_SNA = 11
CCITT protocols, X.25 etc
AF_UNIX = 1
unspecified
AF_UNSPEC = 0
Address families.
AF_VOICEVIEW = 18
NetBios-style addresses
EADDRINUSE = WSAEADDRINUSE
EADDRNOTAVAIL = WSAEADDRNOTAVAIL
EAFNOSUPPORT = WSAEAFNOSUPPORT
EALREADY = WSAEALREADY
ECONNABORTED = WSAECONNABORTED
ECONNREFUSED = WSAECONNREFUSED
ECONNRESET = WSAECONNRESET
EDESTADDRREQ = WSAEDESTADDRREQ
EDQUOT = WSAEDQUOT
EHOSTDOWN = WSAEHOSTDOWN
EHOSTUNREACH = WSAEHOSTUNREACH
EINPROGRESS = WSAEINPROGRESS
EISCONN = WSAEISCONN
ELOOP = WSAELOOP
EMSGSIZE = WSAEMSGSIZE
ENAMETOOLONG = WSAENAMETOOLONG
ENETDOWN = WSAENETDOWN
ENETRESET = WSAENETRESET
ENETUNREACH = WSAENETUNREACH
ENOBUFS = WSAENOBUFS
ENOPROTOOPT = WSAENOPROTOOPT
ENOTCONN = WSAENOTCONN
ENOTEMPTY = WSAENOTEMPTY
ENOTSOCK = WSAENOTSOCK
EOPNOTSUPP = WSAEOPNOTSUPP
EPFNOSUPPORT = WSAEPFNOSUPPORT
EPROCLIM = WSAEPROCLIM
EPROTONOSUPPORT = WSAEPROTONOSUPPORT
EPROTOTYPE = WSAEPROTOTYPE
EREMOTE = WSAEREMOTE
ESHUTDOWN = WSAESHUTDOWN
ESOCKTNOSUPPORT = WSAESOCKTNOSUPPORT
ESTALE = WSAESTALE
ETIMEDOUT = WSAETIMEDOUT
ETOOMANYREFS = WSAETOOMANYREFS
EUSERS = WSAEUSERS
EWOULDBLOCK = WSAEWOULDBLOCK
Windows Sockets errors redefined as regular Berkeley error constants.
These are commented out in Windows NT to avoid conflicts with errno.h.
Use the WSA constants instead.
FD_ACCEPT = $08
change made by Voïvode
FD_CLOSE = $20
FD_CONNECT = $10
FD_OOB = $04
FD_READ = $01
Define flags to be used with the WSAAsyncSelect() call.
FD_SETSIZE = 64
FD_WRITE = $02
FIOASYNC = IOC_IN or { set/clear async i/o }
((Longint(SizeOf(Longint)) and IOCPARM_MASK) shl 16) or
(Longint(Byte('f')) shl 8) or 125
set/clear non-blocking i/o
FIONBIO = IOC_IN or { set/clear non-blocking i/o }
((Longint(SizeOf(Longint)) and IOCPARM_MASK) shl 16) or
(Longint(Byte('f')) shl 8) or 126
get # bytes to read
FIONREAD = IOC_OUT or { get # bytes to read }
((Longint(SizeOf(Longint)) and IOCPARM_MASK) shl 16) or
(Longint(Byte('f')) shl 8) or 127
HOST_NOT_FOUND = WSAHOST_NOT_FOUND
IMPLINK_HIGHEXPER = 158
IMPLINK_IP = 155
Link numbers
IMPLINK_LOWEXPER = 156
INADDR_ANY = $00000000
INADDR_BROADCAST = $FFFFFFFF
INADDR_LOOPBACK = $7F000001
INADDR_NONE = $FFFFFFFF
INVALID_SOCKET = TSocket(NOT(0))
per socket; must fit in one mbuf } { This is used instead of -1, since the
TSocket type is unsigned.
IOCPARM_MASK = $7f
IOC_IN = $80000000
IOC_INOUT = (IOC_IN or IOC_OUT)
IOC_OUT = $40000000
IOC_VOID = $20000000
IPPORT_BIFFUDP = 512
UNIX UDP sockets
IPPORT_CMDSERVER = 514
IPPORT_DAYTIME = 13
IPPORT_DISCARD = 9
IPPORT_ECHO = 7
Port/socket numbers: network standard functions
IPPORT_EFSSERVER = 520
IPPORT_EXECSERVER = 512
UNIX TCP sockets
IPPORT_FINGER = 79
IPPORT_FTP = 21
IPPORT_LOGINSERVER = 513
IPPORT_MTP = 57
IPPORT_NAMESERVER = 42
IPPORT_NETSTAT = 15
IPPORT_RESERVED = 1024
Ports < IPPORT_RESERVED are reserved for
privileged processes (e.g. root).
IPPORT_RJE = 77
IPPORT_ROUTESERVER = 520
IPPORT_SMTP = 25
IPPORT_SUPDUP = 95
IPPORT_SYSTAT = 11
IPPORT_TELNET = 23
IPPORT_TFTP = 69
Port/socket numbers: host specific functions
IPPORT_TIMESERVER = 37
IPPORT_TTYLINK = 87
IPPORT_WHOIS = 43
IPPORT_WHOSERVER = 513
IPPROTO_GGP = 2
IPPROTO_ICMP = 1
IPPROTO_IDP = 22
IPPROTO_IP = 0
Protocols
IPPROTO_MAX = 256
IPPROTO_ND = 77
IPPROTO_PUP = 12
IPPROTO_RAW = 255
IPPROTO_TCP = 6
IPPROTO_UDP = 17
IP_ADD_MEMBERSHIP = 5
set/get IP multicast loopback
IP_DEFAULT_MULTICAST_LOOP = 1
normally limit m'casts to 1 hop
IP_DEFAULT_MULTICAST_TTL = 1
drop an IP group membership
IP_DROP_MEMBERSHIP = 6
add an IP group membership
IP_MAX_MEMBERSHIPS = 20
normally hear sends if a member
IP_MULTICAST_IF = 2
IP_MULTICAST_LOOP = 4
set/get IP multicast timetolive
IP_MULTICAST_TTL = 3
set/get IP multicast interface
IP_OPTIONS = 1
Options for use with [gs]etsockopt at the IP level.
MAXGETHOSTSTRUCT = 1024
partial send or recv for message xport } { Define constant based on rfc883, used by gethostbyxxxx() calls.
MSG_DONTROUTE = $4
peek at incoming message
MSG_MAXIOVLEN = 16
send without using routing tables
MSG_OOB = $1
MSG_PARTIAL = $8000
MSG_PEEK = $2
process out-of-band data
NO_ADDRESS = WSANO_ADDRESS
NO_DATA = WSANO_DATA
NO_RECOVERY = WSANO_RECOVERY
PF_APPLETALK = AF_APPLETALK
PF_CCITT = AF_CCITT
PF_CHAOS = AF_CHAOS
PF_DATAKIT = AF_DATAKIT
PF_DECnet = AF_DECnet
PF_DLI = AF_DLI
PF_ECMA = AF_ECMA
PF_HYLINK = AF_HYLINK
PF_IMPLINK = AF_IMPLINK
PF_INET = AF_INET
PF_IPX = AF_IPX
PF_ISO = AF_ISO
PF_LAT = AF_LAT
PF_MAX = AF_MAX
PF_NS = AF_NS
PF_OSI = AF_OSI
PF_PUP = AF_PUP
PF_SNA = AF_SNA
PF_UNIX = AF_UNIX
PF_UNSPEC = AF_UNSPEC
Protocol families, same as address families for now.
PF_VOICEVIEW = AF_VOICEVIEW
SOCKET_ERROR = -1
SOCK_DGRAM = 2
stream socket
SOCK_RAW = 3
datagram socket
SOCK_RDM = 4
raw-protocol interface
SOCK_SEQPACKET = 5
reliably-delivered message
SOCK_STREAM = 1
Types
SOL_SOCKET = $ffff
Level number for (get/set)sockopt() to apply to socket itself.
SOMAXCONN = 5
options for socket level } { Maximum queue length specifiable by listen.
SO_ACCEPTCONN = $0002
turn on debugging info recording
SO_BROADCAST = $0020
just use interface addresses
SO_CONNDATA = $7000
get socket type } { Options for connect and disconnect data and options. Used only by
non-TCP/IP transports such as DECNet, OSI TP4, etc.
SO_CONNDATALEN = $7004
SO_CONNOPT = $7001
SO_CONNOPTLEN = $7005
SO_DEBUG = $0001
sequenced packet stream } { Option flags per-socket.
SO_DISCDATA = $7002
SO_DISCDATALEN = $7006
SO_DISCOPT = $7003
SO_DISCOPTLEN = $7007
SO_DONTLINGER = $ff7f
leave received OOB data in line
SO_DONTROUTE = $0010
keep connections alive
SO_ERROR = $1007
receive timeout
SO_KEEPALIVE = $0008
allow local address reuse
SO_LINGER = $0080
bypass hardware when possible
SO_MAXDG = $7009
Other NT-specific options.
SO_MAXPATHDG = $700A
SO_OOBINLINE = $0100
linger on close if data present
SO_OPENTYPE = $7008
Option for opening sockets for synchronous access.
SO_RCVBUF = $1002
send buffer size
SO_RCVLOWAT = $1004
send low-water mark
SO_RCVTIMEO = $1006
send timeout
SO_REUSEADDR = $0004
socket has had listen()
SO_SNDBUF = $1001
Additional options.
SO_SNDLOWAT = $1003
receive buffer size
SO_SNDTIMEO = $1005
receive low-water mark
SO_SYNCHRONOUS_ALERT = $10
SO_SYNCHRONOUS_NONALERT = $20
SO_TYPE = $1008
get error status and clear
SO_USELOOPBACK = $0040
permit sending of broadcast msgs
TCP_BSDURGENT = $7000
TCP_NODELAY = $0001
TCP options.
TRY_AGAIN = WSATRY_AGAIN
WSABASEERR = 10000
All Windows Sockets error constants are biased by WSABASEERR from the "normal"
WSADESCRIPTION_LEN = 256
WSAEACCES = (WSABASEERR+13)
WSAEADDRINUSE = (WSABASEERR+48)
WSAEADDRNOTAVAIL = (WSABASEERR+49)
WSAEAFNOSUPPORT = (WSABASEERR+47)
WSAEALREADY = (WSABASEERR+37)
WSAEBADF = (WSABASEERR+9)
WSAECONNABORTED = (WSABASEERR+53)
WSAECONNREFUSED = (WSABASEERR+61)
WSAECONNRESET = (WSABASEERR+54)
WSAEDESTADDRREQ = (WSABASEERR+39)
WSAEDISCON = (WSABASEERR+101)
WSAEDQUOT = (WSABASEERR+69)
WSAEFAULT = (WSABASEERR+14)
WSAEHOSTDOWN = (WSABASEERR+64)
WSAEHOSTUNREACH = (WSABASEERR+65)
WSAEINPROGRESS = (WSABASEERR+36)
WSAEINTR = (WSABASEERR+4)
Windows Sockets definitions of regular Microsoft C error constants
WSAEINVAL = (WSABASEERR+22)
WSAEISCONN = (WSABASEERR+56)
WSAELOOP = (WSABASEERR+62)
WSAEMFILE = (WSABASEERR+24)
WSAEMSGSIZE = (WSABASEERR+40)
WSAENAMETOOLONG = (WSABASEERR+63)
WSAENETDOWN = (WSABASEERR+50)
WSAENETRESET = (WSABASEERR+52)
WSAENETUNREACH = (WSABASEERR+51)
WSAENOBUFS = (WSABASEERR+55)
WSAENOPROTOOPT = (WSABASEERR+42)
WSAENOTCONN = (WSABASEERR+57)
WSAENOTEMPTY = (WSABASEERR+66)
WSAENOTSOCK = (WSABASEERR+38)
WSAEOPNOTSUPP = (WSABASEERR+45)
WSAEPFNOSUPPORT = (WSABASEERR+46)
WSAEPROCLIM = (WSABASEERR+67)
WSAEPROTONOSUPPORT = (WSABASEERR+43)
WSAEPROTOTYPE = (WSABASEERR+41)
WSAEREMOTE = (WSABASEERR+71)
WSAESHUTDOWN = (WSABASEERR+58)
WSAESOCKTNOSUPPORT = (WSABASEERR+44)
WSAESTALE = (WSABASEERR+70)
WSAETIMEDOUT = (WSABASEERR+60)
WSAETOOMANYREFS = (WSABASEERR+59)
WSAEUSERS = (WSABASEERR+68)
WSAEWOULDBLOCK = (WSABASEERR+35)
Windows Sockets definitions of regular Berkeley error constants
WSAHOST_NOT_FOUND = (WSABASEERR+1001)
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
WSANOTINITIALISED = (WSABASEERR+93)
WSANO_ADDRESS = WSANO_DATA
no address, look for MX record
WSANO_DATA = (WSABASEERR+1004)
Valid name, no data record of requested type
WSANO_RECOVERY = (WSABASEERR+1003)
Non recoverable errors, FORMERR, REFUSED, NOTIMP
WSASYSNOTREADY = (WSABASEERR+91)
Extended Windows Sockets error constant definitions
WSASYS_STATUS_LEN = 128
WSATRY_AGAIN = (WSABASEERR+1002)
Non-Authoritative: Host not found, or SERVERFAIL
WSAVERNOTSUPPORTED = (WSABASEERR+92)