function HostToIP(Name: string; var Ip: string): Boolean;
var
  wsdata : TWSAData;
  hostName : array [0..255] of char;
  hostEnt : PHostEnt;
  addr : PChar;
begin
  WSAStartup ($0101, wsdata);
  try
    gethostname (hostName, sizeof (hostName));
    StrPCopy(hostName, Name);
    hostEnt := gethostbyname (hostName);
    if Assigned (hostEnt) then
      if Assigned (hostEnt^.h_addr_list) then begin
        addr := hostEnt^.h_addr_list^;
        if Assigned (addr) then begin
          IP := Format ('%d.%d.%d.%d', [byte (addr [0]),
          byte (addr [1]), byte (addr [2]), byte (addr [3])]);
          Result := True;
        end
        else
          Result := False;
      end
      else
        Result := False
    else begin
      Result := False;
    end;
  finally
    WSACleanup;
  end
end;TWSAData;//这是什么对象?有什么作用?
WSAStartup ($0101, wsdata);//这是个什么函数?什么作用?
PHostEnt//这是个什么变量?什么作用?
Assigned//这是个什么函数,好像在很多地方见过
WSACleanup;//);//这是个什么函数?什么作用?

解决方案 »

  1.   

    老兄,好像不喜欢查Help!
    Use Assigned to determine whether the pointer or procedure referenced by P is nil. P must be a variable reference of a pointer or procedural type. Assigned(P) corresponds to the test P<> nil for a pointer variable, and @P <> nil for a procedural variable.
    Assigned returns False if P is nil, True otherwise.其他几个应该是win32的api,我没有用过,你可以自己查一下
      

  2.   

    应该是一个和DLL数据库有关的连接吧,好象看到过的,你在参考书上找找
      

  3.   

    这个函数的功能根据名字就可以推断出来了。TWSAData
    WSAStartup ($0101, wsdata);
    PHostEnt
    WSACleanup;
    上面几个应该是自定义的。功能根据名称也可以猜个差不多。Assigned 看一看帮助就知道是干什么的了,呵呵,实在不行可以用金山词霸一个一个的翻译。
      

  4.   

    TWSAData//是一个套接字类型
    WSAStartup ($0101, wsdata);//启动Socket,版本大于2.0
    WSACleanup;//关闭Socket还是看帮助吧说得比我这里明白
      

  5.   

    function WSAStartup(wVersionRequired:word;var WSData):integer;stdcall;
    wVersionRequired指明要使用的WindowsSocketAPI的最低版本号,用于协商版本,其中高字节指定副版本,低字节指定主版本;
    WSData 是TWSData类型的变量,系统把加载的版本信息添加到这个结构中。
    如果函数调用成功,则返回0,否则返回
      

  6.   

    struct hostEnt as below:
    struct hostEnt {
        char FAR *       h_name;
        char FAR * FAR * h_aliases;
        short            h_addrtype;
        short            h_length;
        char FAR * FAR * h_addr_list;
    };
    h_name
    Official name of the host (PC).If using the DNS or similar resolution system, it is the Fully Qualified Domain Name (FQDN) that caused the server to return a reply. If using a local "hosts" file, it is the first entry after the IP address.
    h_aliases
    A NULL-terminated array of alternate names.
    h_addrtype
    The type of address being returned.
    h_length
    The length, in bytes, of each address.
    h_addr_list
    A NULL-terminated list of addresses for the host. Addresses are returned in network byte order.The macro h_addr is defined to be h_addr_list[0] for compatibility with older software.  
    //For more details of the struct of hostEnt,you must Get on the helponline for referenct
      

  7.   

    winsock 函数简介    hukunzhen(收藏)  
      
    关键字     winsock 函数 
      1、WSAStartup函数
    用于初始化Winsock
    [声明]
    int WSAStarup(WORD wVersionRequested,LPWSADATA lpWSAData);
    [参数]
    wVersionRequested - 要求使用Winsock的最低版本号
    lpWSAData - Winsock的详细资料
    [返回值]
    当函数成功调用时返回0
    失败时返回非0的值2、socket函数
    用于生成socket(soket Descriptor)
    [声明]
    SOCKET socket(int af,int type,int protocol);
    [参数]
    af - 地址家族(通常使用:AF_INET)
    type - socket的种类
    SOCK_STREAM : 用于TCP协议
    SOCK_DGRAM : 用于UDP协议
    protocol - 所使用的协议
    [返回值]
    当函数成功调用时返回一个新的SOCKET(Socket Descriptor)
    失败时返回INVALID_SOCKET.3、inet_addr函数
    把好象"xxx.xxx.xxx.xxx"的10进制的IP地址转换为32位整数表示方法
    [声明]
    unsigned long inet_addr ( const char FAR *cp );
    [参数]
    cp - 指向用"xxx.xxx.xxx.xxx"的10进制来表示的IP地址字符串的指针
    [返回值]
    当函数成功调用时返回用32位整数表示的IP地址(按网络字节排列顺序)
    失败时返回INADDR_NONE.4、gethostbyname函数
    可以从主机名获取主机资料.
    [声明]
    struct hostent FAR * gethostbyname ( const char FAR *name );
    [参数]
    name - 指向主机名字符串的指针
    [返回值]
    当函数成功调用时返回主机信息
    失败时返回NULL(空值)5、Bind函数
    指定本地IP地址所使用的端口号时候使用
    [声明]
    int bind ( SOCKET s , const struct sockaddr FAR *addr , int namelen );
    [参数]
    s - 指向用Socket函数生成的Socket Descriptor
    addr - 指向Socket地址的指针
    namelen - 该地址的长度.
    [返回值]
    当函数成功调用时返回0
    调用失败时返回 SOCKET_ERROR 6、connect函数
    用于与服务器建立连接,发出连接请求,必须在参数中指定服务器的IP地址和端口号
    [声明]
    int connect (SOCKET s , const struct sockaddr FAR *name , int namelen );
    [参数]
    s - 指向用Socket函数生成的Socket Descriptor
    name - 指向服务器地址的指针
    namelen - 该地址的长度.
    [返回值]
    当函数成功调用时返回0
    调用失败时返回 SOCKET_ERROR 7、select函数
    可以用于调查一个或多个SOCKET的状态.
    [声明]
    int select ( int nfds , fd_set FAR *readfds , fd_set FAR *writefds , fd_set FAR *exceptfds , const struct timeval FAR *timeout );
    [参数]
    nfds - 在WINDOWS SOCKET API 中该参数可以忽略,通常赋予NILL值
    readfds - 由于接受的SOCKET设备的指针
    writefds - 用于发送数据的SOCKET设备的指针
    exceptfds - 检查错误的状态
    timeout - 超时设定
    [返回值]
    返回大于0的值时,表示与条件相符的SOCKET数
    返回0表示超时
    失败时返回SOCKET_ERROR8、recv函数
    利用Socket进行接受数据.
    [声明]
    int recv ( SOCKET s , char FAR *buf , int len , int flags );
    [参数]
    s - 指向用Socket函数生成的Socket Descriptor
    buf - 接受数据的缓冲区(数组)的指针
    len - 缓冲区的大小
    flag - 调用方式(MSG_PEEK 或 MSG_OOB) 
    [返回值]
    成功时返回收到的字节数.
    如果连接被中断则返回0
    失败时返回 SOCKET_ERROR9、sendto函数
    利用Socket进行发送数据.
    [声明]
    int sendto ( SOCKET s , const char FAR *buf , int len , int flags , const struct sockaddr FAR *to , int token );
    [参数]
    s - 指向用Socket函数生成的Socket Descriptor
    buf - 接受数据的缓冲区(数组)的指针
    len - 缓冲区的大小
    flag - 调用方式(MSG_DONTROUTE , MSG_OOB)
    to - 指向发送方SOCKET地址的指针
    token - 发送方SOCKET地址的大小 
    [返回值]
    成功时返回已经发送的字节数.
    失败时返回SOCKET_ERROR