Q&A

  • 현재 시스템에 열려 있는 포트를 알려면??
현재 프로젝트중인데~~
현재 컴퓨터에 열려 있는 포트 번호를 알고 싶습니다.
여러자료들을 찾아봤는데~~
힘드네여~~

전문가님의 조언 부탁드립니다..
2  COMMENTS
  • Profile
    KDDG_ZZOM 2002.05.09 20:23
    예전에 김영대씨 홈피에서 받은건데...
    확인해보세요...

    var
    data: TWSAData;
    sock: TSocket;
    addr: TSockAddrIn;
    iaddr: TInAddr;
    i    : Integer;
    j,k : Integer;
    begin
      ListBox1.Clear;
      j := StrToIntDef(Edit1.Text,1);
      k := StrToIntDef(Edit2.Text,1);
      for i := j to k do
      begin
      try
        if (WSAStartup($0101, data) = 0) then
        begin
          sock := socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
          if (sock <> INVALID_SOCKET) then
          begin
            // zero out the addr struct.
            FillChar(addr, SizeOf(TSockAddrIn), 0);
            FillChar(iaddr, SizeOf(TInAddr), 0);

            //fill in the internet address
            iaddr.S_addr := inet_addr('210.108.212.5');

            //fill in the rest of the address.
            addr.sin_family := PF_INET;
            addr.sin_port   := htons(i);
            addr.sin_addr   := iaddr;

           // try to connect, if it failes then the port is closed
           if (connect(sock, addr, SizeOf(TSockAddrIn)) = 0) then
           begin
             ListBox1.Items.Add('Port ' + IntToStr(i) + ' IS open');
           end else
           begin
             ListBox1.Items.Add('Port ' + IntToStr(i) + ' NOT open');
           end;
         end else
         begin
           ListBox1.Items.Add('There was an error creating the socket.');
         end;
       end
       else
       begin
         ListBox1.Items.Add('Failed to initialize winsock.');
       end;
       ListBox1.Refresh;
    finally
       WSACleanup();
    end;
    end;

  • Profile
    조명규 2002.05.10 01:18
    답변 감사드립니다.^^*
    테스트 해보니까 되네여~~~

    그런데 속도가 느린데.  netstat 처럼 빨리 열린 포트 검사하는 코드는 없을까여??
    지금 하고 있는게 넘느려서여~~~
    부탁드립니다.