2012-07-15 2 views
1

내 IP가 현재 : 123.123.123.123내 컴퓨터의 외부 IP 주소를 얻는 방법?

프로그래밍 방식으로 문자열을 가져올 수 있습니까?

참고 :이 IP를 얻고 싶지 않습니다. 192.168.0.10, 다른 사람들이 HTTP 등으로 내 컴퓨터에 연결할 때 사용할 수있는 IP를 원합니다.

참고 : 주소를 얻으려면 ip4.me와 같은 일부 웹 페이지를 열고 싶지 않습니다. 단지 C++로 가져오고 싶습니다.

나는 Google에 도전했지만 모든 제안은 "페이지를로드하고 알려주는 IP를 읽었습니다"라고했습니다. 그게 유일한 방법인가요?!

+3

유일한 다른 방법은 어떻게 든 인터넷에 연결하는 것 (예 : DSL 라우터/모뎀)을 쿼리하는 것입니다. 이를위한 일반적인 인터페이스는 없습니다. 일부 라이브러리 일 수도 있지만 표준 C++에는 없습니다. – Mat

+0

어떻게 연결 되었습니까? 직장에서 우리는 2 ~ 3 개의 IP 주소를 10,000 명의 사람들이 공유합니다. 이 경우 외부 주소를 아는 것은 유용하지 않습니다. –

+0

컴퓨터가 * 외부 IP 주소를 알지 못하기 때문에 API를 사용할 수 없습니다. Windows는 가지고 있지 않은 정보를 제공 할 수 없습니다. 어쨌든 외부 주소가 필요한 이유는 무엇입니까? –

답변

4

당신은 http://api.externalip.net/ip/ 또는 일부 유사한 서비스에서 가져올 수 있지만, 나는 일반적으로, 다른 방법은 매우 복잡 할 것

가용성의 수단으로, 어떤 네트워크 장비 이러한 사이트가 얼마나 신뢰할 수있는 확실하지 않다 없다 외부 IP를 알리는 API를 가지고 있으며, 그것이 있더라도 시스코 ASA가 아웃 바운드 트래픽을 결정하는 단순한 xDSL 라우터인지 알 수 없습니다.

+0

당신이 알고있는 다른 웹 사이트는 IP 만 반환하며 다른 것은 분석하지 않으므로 쉽게 파싱 할 수 있습니까? (그 중 하나가 작동하지 않는 경우 낙후 한 사이트를 갖는 것이 현명 할 수 있습니다.) – Rookie

+0

물론이 경우 폴백이 의무적이어야합니다 ... http://checkip.dyndns.org/은 구문 분석이 쉬워야합니다. http://automation.whatismyip.com/n09230945.asp는 ip addr도 마찬가지입니다. –

+0

더 이상 당신이 알고있는 사이트? :) – Rookie

2

기록 경로 옵션을 사용하여 패킷을 보내는 것이 좋습니다.

업스트림 게이트웨이를 알고 있다면 레코드 경로를 설정하고 그 데이터를 배열이나 정규식에 저장할 수있는 ping 명령을 찾을 수 있어야합니다.

WAN IP는 레코드 0 또는 레코드 1이어야합니다.

어떤 네트워크 라이브러리를 사용하고 있습니까?

+0

에 응답 할 것입니다. – Rookie

+0

Hrm. 당신은 winsock보다 더 높은 레이어를보고 싶을 것입니다. 해결 방법이 있습니다. 'out = system ("ping -r 9 xxx.xxx.xxx.xxx");'(라우터가 xxx.xxx.xxx.xxx에 연결하는 게이트웨이를 사용하십시오. 다른 것들은 더 이상 사용할 수 있지만, Mac에서는 작동하지 않는다는 것을 알 수 있습니다.) 명령을 실행하면 이것이 무엇을 반환하는지 확인할 수 있습니다. 중요한 라인은'Route : host [you.rwa.nip.hre]'라고 읽는다. grep은 그 시점에서 그 정보를 얻을 것이다. – sudononymous

관련 문제