⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 overbyte.ics.winsock.pas

📁 BaiduMp3 search baidu mp3
💻 PAS
📖 第 1 页 / 共 2 页
字号:
    [StructLayout(LayoutKind.Sequential)]
    TWSAData = record
        wVersion       : Word;
        wHighVersion   : Word;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst=WSADESCRIPTION_LEN+1)]
        szDescription  : array[0..WSADESCRIPTION_LEN] of Char;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst=WSASYS_STATUS_LEN+1)]
        szSystemStatus : array[0..WSASYS_STATUS_LEN]  of Char;
        iMaxSockets    : Word;
        iMaxUdpDg      : Word;
        //[MarshalAs(UnmanagedType.LPStr)]
        lpVendorInfo   : IntPtr;
    end;

    u_char  = Byte;
    u_short = Word;
    u_long  = Cardinal;
    u_int   = Integer;
    TSocket = u_int;

const
    INVALID_SOCKET            = TSocket(NOT(0));
    SOCKET_ERROR	      = -1;

type
    SunB = packed record
        s_b1, s_b2, s_b3, s_b4: u_char;
    end;

    SunW = packed record
        s_w1, s_w2: u_short;
    end;

    in_addr = record
    { case Integer of
      0: (S_un_b: SunB);
      1: (S_un_w: SunW);
      2: (S_addr: u_long); }
      S_addr: u_long;
    end;
    TInAddr = in_addr;

    sockaddr_in = record
    { case Integer of
      0: (sin_family: u_short;
          sin_port: u_short;
          sin_addr: TInAddr;
          sin_zero: array[0..7] of Char);
      1: (sa_family: u_short;
          sa_data: array[0..13] of Char) }
        sin_family : u_short;
        sin_port   : u_short;
        sin_addr   : TInAddr;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst=8)]
        sin_zero   : array [0..7] of Char;
    end;
    TSockAddrIn = sockaddr_in;
    PSOCKADDR   = ^TSockAddr;
    TSockAddr   = sockaddr_in;

const
    SizeOfTSockAddrIn = 16;     // Win32 size
    SizeOfTSockAddr   = 16;     // Win32 size

type
    PProtoEnt = ^TProtoEnt;
    protoent = record
        p_name    : IntPtr;   //PChar;
        p_aliases : IntPtr;   //^Pchar;
        p_proto   : Smallint;
    end;
    TProtoEnt = protoent;

    PServEnt = ^TServEnt;
    servent = record
        s_name    : IntPtr;       //PChar;
        s_aliases : IntPtr;       //^PChar;
        s_port    : Word;
        s_proto   : IntPtr;       //PChar;
    end;
    TServEnt = servent;

    PHostEnt = ^THostEnt;
    hostent = record
        h_name     : IntPtr;      //PChar;
        h_aliases  : IntPtr;      //^PChar;
        h_addrtype : Smallint;
        h_length   : Smallint;
        {case Byte of
          0: (h_addr_list: ^PChar);
          1: (h_addr: ^PChar) }
        h_addr_list: IntPtr;      //^PChar;
    end;
    THostEnt = hostent;

    PLinger = ^TLinger;
    linger = record
        l_onoff  : u_short;
        l_linger : u_short;
    end;
    TLinger = linger;

    PTimeVal = ^TTimeVal;
    timeval = record
        tv_sec  : Longint;
        tv_usec : Longint;
    end;
    TTimeVal = timeval;

    ip_mreq = record
        imr_multiaddr : in_addr;
        imr_interface : in_addr;
    end;

function  WSAStartup(wVersionRequired: WORD;
                     out WSData: TWSAData): Integer;
function  WSACleanup : Integer;
function  WSAGetLastError: Integer;
procedure WSASetLastError(iError: Integer);
function  WSAAsyncSelect(s: TSocket; HWindow: HWND; wMsg: u_int; lEvent: Longint): Integer;
function  WSAAsyncGetHostByName(HWindow: HWND; wMsg: u_int; const name : String;
                                buf: IntPtr; buflen: Integer): THandle;
function WSAAsyncGetHostByAddr(HWindow: HWND; wMsg: u_int; var addr: u_long;
  len, Struct: Integer; buf: IntPtr; buflen: Integer): THandle;
function  WSACancelAsyncRequest(hAsyncTaskHandle: THandle): Integer;
function  gethostname(name: StringBuilder; len: Integer): Integer;
function  getprotobyname(name : String) : IntPtr;
function  getservbyname(name, proto: String): IntPtr;
function  gethostbyname(name: String): IntPtr;
function  gethostbyaddr(var addr: u_long; len, Struct: Integer): IntPtr;
function  getpeername(s: TSocket; out name: TSockAddr;
                      var namelen: Integer): Integer;
function  ntohl(netshort: u_short): u_short;
function  htons(hostshort: u_short): u_short;
function  ntohs(hostshort: u_short): u_short;
function  htonl(hostlong: u_long): u_long;
function  inet_addr(const cp: String): u_long;
function  inet_ntoa(inaddr: TInAddr): String;
function  socket(af, Struct, protocol: Integer): TSocket;
function  shutdown(s: TSocket; how: Integer): Integer;
function  closesocket(s: TSocket): Integer;
function  accept(s: TSocket; var addr: TSockAddr; var addrlen: Integer): TSocket;
function  bind(s: TSocket; var addr: TSockAddr; namelen: Integer): Integer;
function  connect(s: TSocket; var name: TSockAddr; namelen: Integer): Integer;
function  listen(s: TSocket; backlog: Integer): Integer;
function  recv(s: TSocket; [out] Buf: TBytes; len, flags: Integer): Integer;
function  recvfrom(s: TSocket; [out] Buf: TBytes; len, flags: Integer;
                   out from: TSockAddr; var fromlen: Integer): Integer;
function  ioctlsocket(s: TSocket; cmd: DWORD; var arg: u_long): Integer;
function  send(s: TSocket; const Buf : TBytes; len, flags: Integer): Integer;
function  sendto(s: TSocket; const Buf : TBytes; len, flags: Integer; var addrto: TSockAddr;
                 tolen: Integer): Integer;
function  getsockname(s: TSocket; out name: TSockAddr; var namelen: Integer): Integer;
function  setsockopt_integer(s: TSocket; level, optname: Integer;
                             var optval: Integer; optlen: Integer): Integer;
function  setsockopt_tinaddr(s: TSocket; level, optname: Integer;
                             var optval: TInAddr; optlen: Integer): Integer;
function  setsockopt_ip_mreq(s: TSocket; level, optname: Integer;
                             var optval: ip_mreq; optlen: Integer): Integer;
function  setsockopt_tlinger(s: TSocket; level, optname: Integer;
                             var optval: TLinger; optlen: Integer): Integer;
function  getsockopt_integer(s: TSocket; level, optname: Integer;
                             var optval: Integer; var optlen: Integer): Integer;
function  getsockopt_ip_mreq(s: TSocket; level, optname: Integer;
                             var optval: ip_mreq; var optlen: Integer): Integer;
function  getsockopt_tinaddr(s: TSocket; level, optname: Integer;
                             var optval: TInAddr; var optlen: Integer): Integer;
function  getsockopt_tlinger(s: TSocket; level, optname: Integer;
                             var optval: TLinger; var optlen: Integer): Integer;

implementation

const
  winsocket = 'wsock32.dll';

[DllImport(winsocket, CharSet = CharSet.Ansi, SetLastError = False, EntryPoint = 'WSAStartup')]
function WSAStartup; external;
[DllImport(winsocket, SetLastError = False, EntryPoint = 'WSACleanup')]
function WSACleanup; external;
[DllImport(winsocket, SetLastError = False, EntryPoint = 'WSAGetLastError')]
function WSAGetLastError; external;
[DllImport(winsocket, SetLastError = False, EntryPoint = 'WSASetLastError')]
procedure WSASetLastError; external;
[DllImport(winsocket, SetLastError = False, EntryPoint = 'WSAAsyncSelect')]
function WSAAsyncSelect; external;
[DllImport(winsocket, SetLastError = False, EntryPoint = 'WSAAsyncGetHostByName')]
function WSAAsyncGetHostByName; external;
[DllImport(winsocket, SetLastError = False, EntryPoint = 'WSAAsyncGetHostByAddr')]
function WSAAsyncGetHostByAddr; external;
[DllImport(winsocket, CharSet = CharSet.Ansi, SetLastError = False, EntryPoint = 'WSACancelAsyncRequest')]
function WSACancelAsyncRequest; external;
[DllImport(winsocket, CharSet = CharSet.Ansi, SetLastError = False, EntryPoint = 'gethostname')]
function gethostname; external;
[DllImport(winsocket, CharSet = CharSet.Ansi, SetLastError = False, EntryPoint = 'getprotobyname')]
function getprotobyname; external;
[DllImport(winsocket, CharSet = CharSet.Ansi, SetLastError = False, EntryPoint = 'getservbyname')]
function getservbyname; external;
[DllImport(winsocket, CharSet = CharSet.Ansi, SetLastError = False, EntryPoint = 'gethostbyname')]
function gethostbyname; external;
[DllImport(winsocket, CharSet = CharSet.Ansi, SetLastError = False, EntryPoint = 'gethostbyaddr')]
function gethostbyaddr; external;
[DllImport(winsocket, SetLastError = False, EntryPoint = 'getpeername')]
function getpeername; external;
[DllImport(winsocket, SetLastError = False, EntryPoint = 'ntohl')]
function ntohl; external;
[DllImport(winsocket, SetLastError = False, EntryPoint = 'htonl')]
function htonl; external;
[DllImport(winsocket, SetLastError = False, EntryPoint = 'htons')]
function htons; external;
[DllImport(winsocket, SetLastError = False, EntryPoint = 'ntohs')]
function ntohs; external;
[DllImport(winsocket, CharSet = CharSet.Ansi, SetLastError = False, EntryPoint = 'inet_addr')]
function inet_addr; external;
[DllImport(winsocket, CharSet = CharSet.Ansi, SetLastError = False, EntryPoint = 'inet_ntoa')]
function inet_ntoa; external;
[DllImport(winsocket, SetLastError = False, EntryPoint = 'socket')]
function socket; external;
[DllImport(winsocket, SetLastError = False, EntryPoint = 'shutdown')]
function shutdown; external;
[DllImport(winsocket, SetLastError = False, EntryPoint = 'closesocket')]
function closesocket; external;
[DllImport(winsocket, SetLastError = False, EntryPoint = 'bind')]
function bind; external;
[DllImport(winsocket, SetLastError = False, EntryPoint = 'accept')]
function accept; external;
[DllImport(winsocket, SetLastError = False, EntryPoint = 'connect')]
function connect; external;
[DllImport(winsocket, SetLastError = False, EntryPoint = 'listen')]
function listen; external;
[DllImport(winsocket, SetLastError = False, EntryPoint = 'send')]
function send; external;
[DllImport(winsocket, SetLastError = False, EntryPoint = 'sendto')]
function sendto; external;
[DllImport(winsocket, SetLastError = False, EntryPoint = 'recv')]
function recv; external;
[DllImport(winsocket, SetLastError = False, EntryPoint = 'recvfrom')]
function recvfrom; external;
[DllImport(winsocket, SetLastError = False, EntryPoint = 'ioctlsocket')]
function ioctlsocket; external;
[DllImport(winsocket, SetLastError = False, EntryPoint = 'getsockname')]
function getsockname; external;
[DllImport(winsocket, SetLastError = False, EntryPoint = 'setsockopt')]
function setsockopt_integer; external;
[DllImport(winsocket, SetLastError = False, EntryPoint = 'setsockopt')]
function setsockopt_tinaddr; external;
[DllImport(winsocket, SetLastError = False, EntryPoint = 'setsockopt')]
function setsockopt_tlinger; external;
[DllImport(winsocket, SetLastError = False, EntryPoint = 'setsockopt')]
function setsockopt_ip_mreq; external;
[DllImport(winsocket, SetLastError = False, EntryPoint = 'getsockopt')]
function getsockopt_integer; external;
[DllImport(winsocket, SetLastError = False, EntryPoint = 'getsockopt')]
function getsockopt_ip_mreq; external;
[DllImport(winsocket, SetLastError = False, EntryPoint = 'getsockopt')]
function getsockopt_tinaddr; external;
[DllImport(winsocket, SetLastError = False, EntryPoint = 'getsockopt')]
function getsockopt_tlinger; external;


end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -