以下function的目的产测试参数Server: string(服务器名);Port: integer(端口)是否正确,但返回值总是False(不管服务器端是否打开),请问如何才能达到我的目的?function TFrmConfig.TestSockConn(Server: string;Port: integer): boolean;
begin
  CSocket.Close;
  CSocket.Host := Server;
  CSocket.Port := Port;
  try
    CSocket.Open;
  finally
    Result := CSocket.Active;
    CSocket.Close;
  end;
end;

解决方案 »

  1.   

    var
        Host:string;
        CSocket: TClientSocket;
        s:tsocket;
        error:integer;
        server:tsockaddrin;begin
        server.sin_addr.S_addr:=inet_addr(pchar(MsgHost));
        s:=socket(AF_INET, SOCK_STREAM, 0);
        server.sin_port:=htons(8113);
        server.sin_family:=AF_INET;
        error:=connect(s,server,sizeof(server));
        if error=0 then
          showmessage('连接成功');
    end;
      

  2.   

    重写一下,变量写错了var
        MyHost,MyPort:string;
        s:tsocket;
        error:integer;
        server:tsockaddrin;begin
        server.sin_addr.S_addr:=inet_addr(pchar(MyHost));
        s:=socket(AF_INET, SOCK_STREAM, 0);
        server.sin_port:=htons(MyPort);
        server.sin_family:=AF_INET;
        error:=connect(s,server,sizeof(server));
        if error=0 then
          showmessage('连接成功');
    end;