C 프로그램에서 내 공개 IP 주소를 알 수있는 방법이 있나요? DSL 모뎀을 사용하고 Linux 운영 체제에서 작업하고 있습니다.
공용 IP를 알아야 인터넷에있는 동안 서버 - 클라이언트 소켓 프로그램을 작동시킬 수 있습니다.
C 프로그램에서 내 공개 IP 주소를 알 수있는 방법이 있나요? DSL 모뎀을 사용하고 Linux 운영 체제에서 작업하고 있습니다.
공용 IP를 알아야 인터넷에있는 동안 서버 - 클라이언트 소켓 프로그램을 작동시킬 수 있습니다.
예, STUN protocol을 사용하여 STUN 서버에 요청한 IP 주소를 물어볼 수 있습니다. 예를 들어 stunserver.org와 같이 사용할 수있는 여러 개의 실행중인 STUN 서버가 있습니다.
당신이 라우터 뒤에 있는지 여부는 분명하지 않지만, 그렇지 않은 경우에는 이것이 중복이라고 생각하지 않습니다.
라우터가있는 경우 라우터가 이미 컴퓨터로 전달되도록 구성되어 있지 않으면 라우터의 공용 IP 주소 을 알면은 거의 쓸모가 없습니다.
라우터를 사용하지 않는 경우 문제가 간단합니다. UDP 소켓을 만들고 비 로컬 IP 주소로 connect
을 작성한 다음 소켓에서 getsockname
으로 전화하십시오. 그 결과로 sockaddr_in
은 해당 주소로 보내는 데 사용될 IP 주소, 즉 "공용 IP 주소"를 포함하게됩니다. 8.8.8.8
은 dns "루트 서버"와 마찬가지로 사용할 주소를 선택하는 좋은 방법입니다. 패킷을 보낼 필요가 없다는 것을 기억하십시오 (이것이 TCP가 아닌 UDP를 사용하는 이유입니다). 단지 무연 소켓 인 connect
만 사용하십시오.