📄 wsocket.pas
字号:
function WSocketGetHostByAddr(Addr : String) : PHostEnt;
function WSocketGetHostByName(Name : String) : PHostEnt;
function LocalHostName : String;
function LocalIPList : TStrings;
function WSocketResolveIp(IpAddr : String) : String;
function WSocketResolveHost(InAddr : String) : TInAddr;
function WSocketResolvePort(Port : String; Proto : String) : Word;
function WSocketResolveProto(sProto : String) : integer;
procedure WSocketUnloadWinsock;
{ function WSocketLoadWinsock : Boolean; 14/02/99 }
type
{$IFDEF VER80}
DWORD = LongInt;
TWSAStartup = function (wVersionRequired: word;
var WSData: TWSAData): Integer;
TWSACleanup = function : Integer;
TWSASetLastError = procedure (iError: Integer);
TWSAGetLastError = function : Integer;
TWSACancelAsyncRequest = function (hAsyncTaskHandle: THandle): Integer;
TWSAAsyncGetHostByName = function (HWindow: HWND;
wMsg: u_int;
name, buf: PChar;
buflen: Integer): THandle;
TWSAAsyncGetHostByAddr = function (HWindow: HWND;
wMsg: u_int; addr: PChar;
len, Struct: Integer;
buf: PChar;
buflen: Integer): THandle;
TWSAAsyncSelect = function (s: TSocket;
HWindow: HWND;
wMsg: u_int;
lEvent: Longint): Integer;
TGetServByName = function (name, proto: PChar): PServEnt;
TGetProtoByName = function (name: PChar): PProtoEnt;
TGetHostByName = function (name: PChar): PHostEnt;
TGetHostName = function (name: PChar; len: Integer): Integer;
TOpenSocket = function (af, Struct, protocol: Integer): TSocket;
TShutdown = function (s: TSocket; how: Integer): Integer;
TSetSockOpt = function (s: TSocket; level, optname: Integer;
optval: PChar;
optlen: Integer): Integer;
TGetSockOpt = function (s: TSocket; level, optname: Integer; optval: PChar; var optlen: Integer): Integer;
TSendTo = function (s: TSocket; var Buf;
len, flags: Integer;
var addrto: TSockAddr;
tolen: Integer): Integer;
TSend = function (s: TSocket; var Buf;
len, flags: Integer): Integer;
TRecv = function (s: TSocket;
var Buf;
len, flags: Integer): Integer;
TRecvFrom = function (s: TSocket;
var Buf; len, flags: Integer;
var from: TSockAddr;
var fromlen: Integer): Integer;
Tntohs = function (netshort: u_short): u_short;
Tntohl = function (netlong: u_long): u_long;
TListen = function (s: TSocket; backlog: Integer): Integer;
TIoctlSocket = function (s: TSocket; cmd: DWORD;
var arg: u_long): Integer;
TInet_ntoa = function (inaddr: TInAddr): PChar;
TInet_addr = function (cp: PChar): u_long;
Thtons = function (hostshort: u_short): u_short;
Thtonl = function (hostlong: u_long): u_long;
TGetSockName = function (s: TSocket; var name: TSockAddr;
var namelen: Integer): Integer;
TGetPeerName = function (s: TSocket; var name: TSockAddr;
var namelen: Integer): Integer;
TConnect = function (s: TSocket; var name: TSockAddr;
namelen: Integer): Integer;
TCloseSocket = function (s: TSocket): Integer;
TBind = function (s: TSocket; var addr: TSockAddr;
namelen: Integer): Integer;
TAccept = function (s: TSocket; var addr: TSockAddr;
var addrlen: Integer): TSocket;
{$ELSE}
TWSAStartup = function (wVersionRequired: word;
var WSData: TWSAData): Integer; stdcall;
TWSACleanup = function : Integer; stdcall;
TWSASetLastError = procedure (iError: Integer); stdcall;
TWSAGetLastError = function : Integer; stdcall;
TWSACancelAsyncRequest = function (hAsyncTaskHandle: THandle): Integer; stdcall;
TWSAAsyncGetHostByName = function (HWindow: HWND;
wMsg: u_int;
name, buf: PChar;
buflen: Integer): THandle; stdcall;
TWSAAsyncGetHostByAddr = function (HWindow: HWND;
wMsg: u_int; addr: PChar;
len, Struct: Integer;
buf: PChar;
buflen: Integer): THandle; stdcall;
TWSAAsyncSelect = function (s: TSocket;
HWindow: HWND;
wMsg: u_int;
lEvent: Longint): Integer; stdcall;
TGetServByName = function (name, proto: PChar): PServEnt; stdcall;
TGetProtoByName = function (name: PChar): PProtoEnt; stdcall;
TGetHostByName = function (name: PChar): PHostEnt; stdcall;
TGetHostName = function (name: PChar; len: Integer): Integer; stdcall;
TOpenSocket = function (af, Struct, protocol: Integer): TSocket; stdcall;
TShutdown = function (s: TSocket; how: Integer): Integer; stdcall;
TSetSockOpt = function (s: TSocket; level, optname: Integer;
optval: PChar;
optlen: Integer): Integer; stdcall;
TGetSockOpt = function (s: TSocket; level, optname: Integer;
optval: PChar;
var optlen: Integer): Integer; stdcall;
TSendTo = function (s: TSocket; var Buf;
len, flags: Integer;
var addrto: TSockAddr;
tolen: Integer): Integer; stdcall;
TSend = function (s: TSocket; var Buf;
len, flags: Integer): Integer; stdcall;
TRecv = function (s: TSocket;
var Buf;
len, flags: Integer): Integer; stdcall;
TRecvFrom = function (s: TSocket;
var Buf; len, flags: Integer;
var from: TSockAddr;
var fromlen: Integer): Integer; stdcall;
Tntohs = function (netshort: u_short): u_short; stdcall;
Tntohl = function (netlong: u_long): u_long; stdcall;
TListen = function (s: TSocket;
backlog: Integer): Integer; stdcall;
TIoctlSocket = function (s: TSocket; cmd: DWORD;
var arg: u_long): Integer; stdcall;
TInet_ntoa = function (inaddr: TInAddr): PChar; stdcall;
TInet_addr = function (cp: PChar): u_long; stdcall;
Thtons = function (hostshort: u_short): u_short; stdcall;
Thtonl = function (hostlong: u_long): u_long; stdcall;
TGetSockName = function (s: TSocket; var name: TSockAddr;
var namelen: Integer): Integer; stdcall;
TGetPeerName = function (s: TSocket; var name: TSockAddr;
var namelen: Integer): Integer; stdcall;
TConnect = function (s: TSocket; var name: TSockAddr;
namelen: Integer): Integer; stdcall;
TCloseSocket = function (s: TSocket): Integer; stdcall;
TBind = function (s: TSocket; var addr: TSockAddr;
namelen: Integer): Integer; stdcall;
{$IFDEF VER90} { Delphi 2 has a special definition}
TAccept = function (s: TSocket; var addr: TSockAddr;
var addrlen: Integer): TSocket; stdcall;
{$ELSE}
TAccept = function (s: TSocket; addr: PSockAddr;
addrlen: PInteger): TSocket; stdcall;
{$ENDIF}
{$ENDIF}
var
FWSAStartup : TWSAStartup;
FWSACleanup : TWSACleanup;
FWSASetLastError : TWSASetLastError;
FWSAGetLastError : TWSAGetLastError;
FWSACancelAsyncRequest : TWSACancelAsyncRequest;
FWSAAsyncGetHostByName : TWSAAsyncGetHostByName;
FWSAAsyncGetHostByAddr : TWSAAsyncGetHostByAddr;
FWSAAsyncSelect : TWSAAsyncSelect;
FGetServByName : TGetServByName;
FGetProtoByName : TGetProtoByName;
FGetHostByName : TGetHostByName;
FGetHostName : TGetHostName;
FOpenSocket : TOpenSocket;
FShutdown : TShutdown;
FSetSockOpt : TSetSockOpt;
FGetSockOpt : TGetSockOpt;
FSendTo : TSendTo;
FSend : TSend;
FRecv : TRecv;
FRecvFrom : TRecvFrom;
Fntohs : Tntohs;
Fntohl : Tntohl;
FListen : TListen;
FIoctlSocket : TIoctlSocket;
FInet_ntoa : TInet_ntoa;
FInet_addr : TInet_addr;
Fhtons : Thtons;
Fhtonl : Thtonl;
FGetSockName : TGetSockName;
FGetPeerName : TGetPeerName;
FConnect : TConnect;
FCloseSocket : TCloseSocket;
FBind : TBind;
FAccept : TAccept;
function WSocketGetProc(const ProcName : String) : Pointer;
function WSocket_WSAStartup(wVersionRequired: word;
var WSData: TWSAData): Integer;
function WSocket_WSACleanup : Integer;
procedure WSocket_WSASetLastError(iError: Integer);
function WSocket_WSAGetLastError: Integer;
function WSocket_WSACancelAsyncRequest(hAsyncTaskHandle: THandle): Integer;
function WSocket_WSAAsyncGetHostByName(HWindow: HWND; wMsg: u_int;
name, buf: PChar;
buflen: Integer): THandle;
function WSocket_WSAAsyncGetHostByAddr(HWindow: HWND;
wMsg: u_int; addr: PChar;
len, Struct: Integer;
buf: PChar;
buflen: Integer): THandle;
function WSocket_WSAAsyncSelect(s: TSocket; HWindow: HWND; wMsg: u_int; lEvent: Longint): Integer;
function WSocket_recv(s: TSocket;
var Buf; len, flags: Integer): Integer;
function WSocket_recvfrom(s: TSocket;
var Buf; len, flags: Integer;
var from: TSockAddr;
var fromlen: Integer): Integer;
function WSocket_getservbyname(name, proto: PChar): PServEnt;
function WSocket_getprotobyname(name: PChar): PProtoEnt;
function WSocket_gethostbyname(name: PChar): PHostEnt;
function WSocket_gethostname(name: PChar; len: Integer): Integer;
function WSocket_socket(af, Struct, protocol: Integer): TSocket;
function WSocket_shutdown(s: TSocket; how: Integer): Integer;
function WSocket_setsockopt(s: TSocket; level, optname: Integer; optval: PChar;
optlen: Integer): Integer;
function WSocket_getsockopt(s: TSocket; level, optname: Integer; optval: PChar;
var optlen: Integer): Integer;
function WSocket_sendto(s: TSocket; var Buf; len, flags: Integer;
var addrto: TSockAddr;
tolen: Integer): Integer;
function WSocket_send(s: TSocket; var Buf; len, flags: Integer): Integer;
function WSocket_ntohs(netshort: u_short): u_short;
function WSocket_ntohl(netlong: u_long): u_long;
function WSocket_listen(s: TSocket; backlog: Integer): Integer;
function WSocket_ioctlsocket(s: TSocket; cmd: DWORD; var arg: u_long): Integer;
function WSocket_inet_ntoa(inaddr: TInAddr): PChar;
function WSocket_inet_addr(cp: PChar): u_long;
function WSocket_htons(hostshort: u_short): u_short;
function WSocket_htonl(hostlong: u_long): u_long;
function WSocket_getsockname(s: TSocket; var name: TSockAddr;
var namelen: Integer): Integer;
function WSocket_getpeername(s: TSocket; var name: TSockAddr;
var namelen: Integer): Integer;
function WSocket_connect(s: TSocket; var name: TSockAddr;
namelen: Integer): Integer;
function WSocket_closesocket(s: TSocket): Integer;
function WSocket_bind(s: TSocket; var addr: TSockAddr; namelen: Integer): Integer;
{$IFDEF VER80}
function WSocket_accept(s: TSocket; var addr: TSockAddr; var addrlen: Integer): TSocket;
{$ELSE}
{$IFDEF VER90}
function WSocket_accept(s: TSocket; var addr: TSockAddr; var addrlen: Integer): TSocket;
{$ELSE}
function WSocket_accept(s: TSocket; addr: PSockAddr; addrlen: PInteger): TSocket;
{$ENDIF}
{$ENDIF}
implementation
const
GSocketCount : integer = 0;
{ DllStarted : Boolean = FALSE; 14/02/99}
FDllHandle : THandle = 0;
FDllName : String = winsocket;
socksNoError = 20000;
socksProtocolError = 20001;
socksVersionError = 20002;
socksAuthMethodError = 20003;
socksGeneralFailure = 20004;
socksConnectionNotAllowed = 20005;
socksNetworkUnreachable = 20006;
socksHostUnreachable = 20007;
socksConnectionRefused = 20008;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -