내 서버 앱이 듣고있는 포트를 발견하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/578794

  •  06-09-2019
  •  | 
  •  

문제

Boost.Asio는 IP 주소와 포트를 사용하여 서버에 연결할 때 기본 개념을 사용하지 않는 것은 나에게 약간 이상합니다. 나는 부스트에 약간의 멍청이일지도 모른다 - 그리고 나는 그것을 받아 들인다 - 그러나 어쨌든 나는 이해하지 못한다.
따라서 클라이언트가 LocalHost의 서버에 연결할 수 있도록 이와 같은 코드가 있습니다.


        boost::asio::io_service io_service;
        tcp::resolver resolver(io_service);
        tcp::resolver::query query("localhost", "daytime"); 
        tcp::resolver::iterator endpoint_iterator = resolver.resolve(query); 
        tcp::resolver::iterator end;

        tcp::socket socket(io_service);
        boost::system::error_code error = boost::asio::error::host_not_found;
        while(error && endpoint_iterator != end) {
            socket.close();
            socket.connect(*endpoint_iterator++, error);
        }

Winsock 2.0의 Windows는 서버를 식별하기 위해 두 가지 매개 변수 (IP 및 포트)를 사용합니다.
따라서 Qurestion은 - ASIO가 어떤 포트가 연결을 듣고 있는지 정확히 찾는 방법을 정확히 알게됩니까? 모든 포트를 스캔합니까? 그리고 그렇다면 두 서버가 다른 포트에서 동시에 듣는다면 어떻게됩니까?

도움이 되었습니까?

해결책

주간 서비스가 사용하는 포트에서 LocalHost에 연결하고 싶다고 말하고 있습니다. 서비스 파일에서 적절한 포트 번호를 찾습니다 (일반적으로 c : windows system32 drivers etc windows에서는 Unix에서 /etc /services를 믿습니다). 당신은 거기에서 명시적인 포트 번호를 사용할 수도 있습니다.

다른 팁

노력하다,

tcp::resolver::query query("localhost", boost::lexical_cast<string>(port));//assuming port is an int

질문에 답하기 위해 포트 13에서 서버를 시작하고 있음을 기억하십시오. 이것은 Linux Daytime Service를 실행하는 포트입니다. (http://www.sorgonet.com/linux/linuxdaemons/). 따라서 포트를 지정하지 않고 쿼리 ( "localhost", "daytime")를 사용할 수 있습니다.

Open NetCat LocalHost의 포트 13에서 듣기를 듣습니다. 데모의 연결을 수락합니다. 연결할 때 Blabla를 입력하면 데모 프로그램의 출력이 NetCat을 실행하여 실행 : NC -L -P 13을 볼 수 있습니다.

창? Netcat이 없습니까? Cygwin을 설치하고 NetCat을 추가하십시오

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top