Unit FTPSock

Classes

Tmsocket -

Functions

WSAGetAsyncBuflen -
WSAGetAsyncError -
WSAGetSelectError -
WSAGetSelectEvent -
WSAMakeSelectReply -
WSAMakeSyncReply - Miscellaneous Winsock functions

Types

fd_set
hostent
in_addr
linger
LPWSADATA
netent
PFD_SET
PHostEnt
PInteger
PIn_Addr
PLinger
PPchar
PProtoEnt
protoent
PServEnt
PSockAddr
PSockAddr_In
servent
sockaddr
sockaddr_in
sockproto
SunB
SunW
Taccept
Tbind
Tclosesocket
TConnect
Tgethostbyaddr
Tgethostbyname
Tgethostname
Tgetpeername
Tgetprotobyname
Tgetprotobynumber
Tgetservbyname
Tgetservbyport
Tgetsockname
Tgetsockopt
Thtonl
Thtons
timeval
Tinet_addr
Tinet_ntoa
Tioctlsocket
TlistenProc
Tntohl
Tntohs
Trecv
Trecvfrom
Tselect
Tsend
Tsendto
Tsetsockopt
Tshutdown
TSock
Tsocket
TSSWndMethod
TWSAAsyncGetHostByAddr
TWSAAsyncGetHostByName
TWSAAsyncGetProtoByName
TWSAAsyncGetProtoByNumber
TWSAAsyncGetServByName
TWSAAsyncGetServByPort
TWSAAsyncSelect
TWSACancelAsyncRequest
TWSACancelBlockingCall
TWSACleanup
TWSAGetLastError
TWSAIsBlocking
TWSASetBlockingHook
TWSASetLastError
TWSAStartup
TWSAUnhookBlockingHook
u_char
u_int
u_long
u_short
WSAData

Constants

AF_APPLETALK
AF_CCITT
AF_CHAOS
AF_DATAKIT
AF_DECnet
AF_DLI
AF_ECMA
AF_HYLINK
AF_IMPLINK
AF_INET
AF_LAT
AF_MAX
AF_NBS
AF_NS
AF_PUP
AF_SNA
AF_UNIX
AF_UNSPEC
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
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_OPTIONS
MAXGETHOSTSTRUCT
MSG_DONTROUTE
MSG_MAXIOVLEN
MSG_OOB
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_LAT
PF_MAX
PF_NBS
PF_NS
PF_PUP
PF_SNA
PF_UNIX
PF_UNSPEC
SOCKET_ERROR
SOCK_DGRAM
SOCK_RAW
SOCK_RDM
SOCK_SEQPACKET
SOCK_STREAM
SOL_SOCKET
SOMAXCONN
SO_ACCEPTCONN
SO_BROADCAST
SO_DEBUG
SO_DONTLINGER
SO_DONTROUTE
SO_ERROR
SO_KEEPALIVE
SO_LINGER
SO_OOBINLINE
SO_RCVBUF
SO_RCVLOWAT
SO_RCVTIMEO
SO_REUSEADDR
SO_SNDBUF
SO_SNDLOWAT
SO_SNDTIMEO
SO_TYPE
SO_USELOOPBACK
TRY_AGAIN
WM_ARPDONE
WM_msockLAST
WM_SOCKMSG
WSABASEERR
WSADESCRIPTION_LEN
WSAEACCES
WSAEADDRINUSE
WSAEADDRNOTAVAIL
WSAEAFNOSUPPORT
WSAEALREADY
WSAEBADF
WSAECONNABORTED
WSAECONNREFUSED
WSAECONNRESET
WSAEDESTADDRREQ
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

Variables

S_un


Functions


function WSAGetAsyncBuflen (Param: LongInt): Word;


function WSAGetAsyncError (Param: LongInt): Word;


function WSAGetSelectError (Param: LongInt): Word;


function WSAGetSelectEvent (Param: LongInt): Word;


function WSAMakeSelectReply (Event, Error: Word): LongInt;


function WSAMakeSyncReply (Buflen, Error: Word): LongInt;

Miscellaneous Winsock functions

Types


fd_set = record
fd_count : u_short;
fd_array : array[0..FD_SETSIZE - 1] of TSock;
end;

hostent = record
h_name : PChar;
h_aliases : PPChar;
h_addrtype : SmallInt;
h_length : SmallInt;
h_addr_list : PPChar;
h_addr : PChar;
end;

in_addr = record
end;

linger = record
l_onoff : u_short;
l_linger : u_short;
end;

LPWSADATA = ^WSAData

netent = record
n_name : PChar;
n_aliases : ^PChar;
n_addrtype : SmallInt;
n_net : u_long;
end;

PFD_SET = ^FD_SET

PHostEnt = ^HostEnt

PInteger = ^Integer

PIn_Addr = ^In_Addr

PLinger = ^Linger

PPchar = ^PChar

PProtoEnt = ^ProtoEnt

protoent = record
p_name : PChar;
p_aliases : ^Pchar;
p_proto : SmallInt;
end;

PServEnt = ^ServEnt

PSockAddr = ^SockAddr

PSockAddr_In = ^SockAddr_In

servent = record
s_name : PChar;
s_aliases : ^PChar;
s_port : SmallInt;
s_proto : PChar;
end;

sockaddr = record
sa_family : u_short;
sa_data : array[0..13] of char;
end;

sockaddr_in = record
sin_family : SmallInt;
sin_port : u_short;
sin_addr : in_addr;
sin_zero : array[0..7] of char;
end;

sockproto = record
sp_family : u_short;
sp_protocol : u_short;
end;
should be 0..13 ?
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;

Taccept = function(s: TSock; addr: PSockaddr; addrlen: PInteger): TSock

Tbind = function(s: TSock; addr: Psockaddr; namelen: integer): integer

Tclosesocket = function(s: TSock): integer

TConnect = function(s: TSock; name: Psockaddr; namelen: integer): integer

Tgethostbyaddr = function(addr: PChar; len, struct: integer): PHostEnt

Tgethostbyname = function(name: PChar): PHostEnt
hostent
Tgethostname = function(name: PChar; len: integer): integer
hostent
Tgetpeername = function(s: TSock; name: Psockaddr; namelen: Pinteger): integer

Tgetprotobyname = function(name: PChar): PProtoEnt
protoent
Tgetprotobynumber = function(proto: integer): PProtoEnt
servent
Tgetservbyname = function(name, proto: PChar): PServEnt
servent
Tgetservbyport = function(port: integer; proto: PChar): PServEnt

Tgetsockname = function(s: TSock; name: Psockaddr; namelen: Pinteger): integer

Tgetsockopt = function(s: TSock; level, optname: integer; optval: PChar; optlen: integer): integer

Thtonl = function(hostlong: u_long): u_long

Thtons = function(hostshort: u_short): u_short

timeval = record
tv_sec : longint;
tv_usec : longint;
end;

Tinet_addr = function(cp: PChar): u_long

Tinet_ntoa = function(inaddr: in_addr): PChar
PIn_Addr; } { in_addr
Tioctlsocket = function(s: TSock; cmd: longint; argp: u_long): integer

TlistenProc = function(s: TSock; backlog: integer): integer

Tntohl = function(netlong: u_long): u_long

Tntohs = function(netshort: u_short): u_short

Trecv = function(s: TSock; buf: PChar; len, flags: integer): integer

Trecvfrom = function(s: TSock; buf: PChar; len, flags: integer; from: sockaddr; fromlen: integer): integer

Tselect = function(nfds: integer; readfds, writefds, exceptfds: fd_set; timeout: timeval): longint

Tsend = function(s: TSock; buf: PChar; len, flags: integer): integer

Tsendto = function(s: TSock; buf: PChar; len, flags: integer; addrto: sockaddr; tolen: integer): integer

Tsetsockopt = function(s: TSock; level, optname: integer; optval: PChar; optlen: integer): integer

Tshutdown = function(s: TSock; how: integer): integer

TSock = integer

Tsocket = function(af, struct, protocol: integer): TSock

TSSWndMethod = procedure(var Message: TMessage) of object

TWSAAsyncGetHostByAddr = function  (HWindow: HWND; wMsg: u_int; addr: PChar; len, struct: integer;
   buf: PChar; buflen: integer): THandle

TWSAAsyncGetHostByName = function  (HWindow: HWND; wMsg: u_int; name, buf: PChar; buflen: integer): THandle

TWSAAsyncGetProtoByName = function  (HWindow: HWND; wMsg: u_int; name, buf: PChar; buflen: integer): THandle

TWSAAsyncGetProtoByNumber = function  (HWindow: HWND; wMsg: u_int; number: integer;
   buf: PChar; buflen: integer): THandle

TWSAAsyncGetServByName = function  (HWindow: HWND; wMsg: u_int; name, proto, buf: PChar; buflen: integer): THandle

TWSAAsyncGetServByPort = function  ( HWindow: HWND; wMsg, port: u_int; proto, buf: PChar; buflen: integer): THandle

TWSAAsyncSelect = function  (s: TSock; HWindow: HWND; wMsg: u_int; lEvent: longint): integer

TWSACancelAsyncRequest = function  (hAsyncTaskHandle: THandle): integer

TWSACancelBlockingCall = function : integer

TWSACleanup = function : integer

TWSAGetLastError = function : integer

TWSAIsBlocking = function : BOOL

TWSASetBlockingHook = function  (lpBlockFunc: TFarProc): TFarProc

TWSASetLastError = procedure(iError: integer)

TWSAStartup = function(wVersionRequired: word; lpWSData: LPWSADATA): integer
protoent
TWSAUnhookBlockingHook = function : integer

u_char = char
Microsoft Windows Socket implementation of Monster FTP Client
u_int = word
byte ??
u_long = longint

u_short = word

WSAData = record
wVersion : word;
wHighVersion : word;
szDescription : array[0..WSADESCRIPTION_LEN] of char;
szSystemStatus : array[0..WSASYS_STATUS_LEN] of char;
iMaxSockets : SmallInt;
iMaxUdpDg : SmallInt;
lpVendorInfo : PChar;
end;

Constants

AF_APPLETALK = 16

AF_CCITT = 10

AF_CHAOS = 5

AF_DATAKIT = 9

AF_DECnet = 12

AF_DLI = 13

AF_ECMA = 8

AF_HYLINK = 15

AF_IMPLINK = 3

AF_INET = 2

AF_LAT = 14

AF_MAX = 17

AF_NBS = 7

AF_NS = 6

AF_PUP = 4

AF_SNA = 11

AF_UNIX = 1

AF_UNSPEC = 0

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

FD_ACCEPT = $08

FD_CLOSE = $20

FD_CONNECT = $10

FD_OOB = $04

FD_READ = $01

FD_SETSIZE = 64

not a mistake

FD_WRITE = $02

HOST_NOT_FOUND = WSAHOST_NOT_FOUND

IMPLINK_HIGHEXPER = 158

IMPLINK_IP = 155

IMPLINK_LOWEXPER = 156

INADDR_ANY = 0

INADDR_BROADCAST = $ffffffff

INADDR_LOOPBACK = $7f000001

INADDR_NONE = $ffffffff

INVALID_SOCKET = TSock(NOT(0))

IOCPARM_MASK = $007f

IOC_IN = $80000000

IOC_INOUT = (IOC_IN or IOC_OUT)

IOC_OUT = $40000000

IOC_VOID = $20000000

IPPORT_BIFFUDP = 512

IPPORT_CMDSERVER = 514

IPPORT_DAYTIME = 13

IPPORT_DISCARD = 9

IPPORT_ECHO = 7

IPPORT_EFSSERVER = 520

IPPORT_EXECSERVER = 512

IPPORT_FINGER = 79

IPPORT_FTP = 21

IPPORT_LOGINSERVER = 513

IPPORT_MTP = 57

IPPORT_NAMESERVER = 42

IPPORT_NETSTAT = 15

IPPORT_RESERVED = 1024

IPPORT_RJE = 77

IPPORT_ROUTESERVER = 520

IPPORT_SMTP = 25

IPPORT_SUPDUP = 95

IPPORT_SYSTAT = 11

IPPORT_TELNET = 23

IPPORT_TFTP = 69

IPPORT_TIMESERVER = 37

IPPORT_TTYLINK = 87

IPPORT_WHOIS = 43

IPPORT_WHOSERVER = 513

IPPROTO_GGP = 2

IPPROTO_ICMP = 1

IPPROTO_IDP = 22

IPPROTO_IP = 0

IPPROTO_MAX = 256

IPPROTO_ND = 77

IPPROTO_PUP = 12

IPPROTO_RAW = 255

IPPROTO_TCP = 6

IPPROTO_UDP = 17

IP_OPTIONS = 1

MAXGETHOSTSTRUCT = 1024

MSG_DONTROUTE = $4

MSG_MAXIOVLEN = 16

MSG_OOB = $1

MSG_PEEK = $2

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_LAT = AF_LAT

PF_MAX = AF_MAX

PF_NBS = AF_NBS

PF_NS = AF_NS

PF_PUP = AF_PUP

PF_SNA = AF_SNA

PF_UNIX = AF_UNIX

PF_UNSPEC = AF_UNSPEC

SOCKET_ERROR = - 1

SOCK_DGRAM = 2

SOCK_RAW = 3

SOCK_RDM = 4

SOCK_SEQPACKET = 5

SOCK_STREAM = 1

SOL_SOCKET = $ffff

SOMAXCONN = 5

SO_ACCEPTCONN = $0002

SO_BROADCAST = $0020

SO_DEBUG = $0001

SO_DONTLINGER = $ff7f

SO_DONTROUTE = $0010

SO_ERROR = $1007

SO_KEEPALIVE = $0008

SO_LINGER = $0080

SO_OOBINLINE = $0100

SO_RCVBUF = $1002

SO_RCVLOWAT = $1004

SO_RCVTIMEO = $1006

SO_REUSEADDR = $0004

SO_SNDBUF = $1001

SO_SNDLOWAT = $1003

SO_SNDTIMEO = $1005

SO_TYPE = $1008

SO_USELOOPBACK = $0040

TRY_AGAIN = WSATRY_AGAIN

WM_ARPDONE = WM_USER

WM_msockLAST = WM_SOCKMSG

WM_SOCKMSG = WM_USER + 1

WSABASEERR = 10000

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)

WSAEDQUOT = (WSABASEERR + 69)

WSAEFAULT = (WSABASEERR + 14)

WSAEHOSTDOWN = (WSABASEERR + 64)

WSAEHOSTUNREACH = (WSABASEERR + 65)

WSAEINPROGRESS = (WSABASEERR + 36)

WSAEINTR = (WSABASEERR + 4)

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)

WSAHOST_NOT_FOUND = (WSABASEERR + 1001)

WSANOTINITIALISED = (WSABASEERR + 93)

WSANO_ADDRESS = WSANO_DATA

WSANO_DATA = (WSABASEERR + 1004)

WSANO_RECOVERY = (WSABASEERR + 1003)

WSASYSNOTREADY = (WSABASEERR + 91)

WSASYS_STATUS_LEN = 128

WSATRY_AGAIN = (WSABASEERR + 1002)

WSAVERNOTSUPPORTED = (WSABASEERR + 92)


Variables

S_un : in_addr