[질문]C언어 자신의 ip 알아볼려면(윈도에서)?
글쓴이: psycoder / 작성시간: 토, 2004/04/17 - 6:35오전
안녕하세요.
실력이 없어서 자꾸 질문만 드리네요. :oops:
윈도에서 C언어로 프로그램을 하나 만들고 있는데요..
자신의 ip를 얻어야 하는데 어떻게 해야하는지 모르겠네요.
dns에 등록되지 않은 컴퓨터이므로 gethostbyname() 같은건 사용할수 없습니다.
5시간째 검색하고 책 찾아보고 코딩해보고 하는데 도저히 모르겠어서 질문 올립니다.
예제 소스나 힌트좀 부탁드립니다.
참, 윈9x/nt/2000/xp/2003 모두 지원해야합니다.
그럼 좋은 하루 되세요. :)
Forums:
...
외부의 다른 서버에 접속한 뒤 아래 코드를 수행하면 자신의 주소를 얻어올 수 있습니다. connect의 오버헤드가 있지만 확실한 결과를 얻습니다.
(공유기 등을 통하는 경우, 로컬 IP만 검색하면 192.168.0.1 같은 것들만 잡히는 경우가 있더군요. connect 없이 IP주소를 제대로 얻는 방법이 있으면 알려주시길 바랍니다.)
위 코드와는 별개로, connect 없이 로컬의 모든 아이피 주소를 받아오는 코드입니다:
한 개 더 있었는데 어디갔는지 모르겠네요 :oops:
[code:1]#include <netinet/in.h>
이거 즉빵입니다.
#include <com.h> <C2H5OH.h> <woman.h>
do { if (com) hacking(); if (money) drinking(); if (women) loving(); } while (1);
...
윈도우 코드가 아니군요. 8)
답변 감사합니다. :D Rica님 갈켜주신데로 connect()후
답변 감사합니다. :D
Rica님 갈켜주신데로 connect()후 getsockname() 을 해주니 ip를 알수 있네요.
근데 역시 말씀하신데로 connect를 해야 한다는 단점이 있네요.
윈도에서 자체 지원해주는 api(이를테면 랜카드의 ip정보를 알아오는)가 있을듯 한데..
그간 바빠서 손을 못데고 있었는데 좀 알아봐야 겠군요.
NT를 지원하지 않아도 괜찮다면 이런 것도 괜찮습니다.[code:
NT를 지원하지 않아도 괜찮다면 이런 것도 괜찮습니다.
또 이런 방법도 있죠.
플랫폼에 상관없는 방법이라면 이런 것도 있구요.
좋은 답변들이 많이 나왔습니다.iphlpapi.dll(*.h)에 있는
좋은 답변들이 많이 나왔습니다.
iphlpapi.dll(*.h)에 있는 함수들에 대해 검토해 보시지요.
------------------ P.S. --------------
지식은 오픈해서 검증받아야 산지식이된다고 동네 아저씨가 그러더라.
참고..1.gethostbyname() 등의 콜을 사용하면..
참고..
1.
gethostbyname() 등의 콜을 사용하면..
/etc/hosts 혹은 DNS 설정에 따라 뜻하지 않은 결과를 얻을 수 있을것 같습니다.
2.
서지훈님의 예제로는..
네트웍 인터페이스 여러개이고,
운나쁘게 첫번째 인터페이스가 정상이 아닐경우.. 원치 않는 결과를 얻을 것 같군요.
(NIC 두개가 꽃혀있고 첫번째것이 그냥 꽃혀있기만한, 쓰래기 IP 를 가진 경우)
3. '자신의 IP' 란것은 여러개일수 있습니다. 가령 PC 에 모뎀과, 무선랜카드와, 일반 랜카드가 꽃혀있다면 IP 가 3개일수 있는데요..
'보통 외부 네트웍 접속에 사용되는 IP' 를 원하신 거라면..
가장 쉬운 방법은 connect() 때려보는 것이겠구요,
그게 아니라면 NIC 의 IP 리스트 얻어서 default gateway 와 같은 subnet 에 속한 녀석으로 고르는게 괜찮지 않을까 생각되지만... 과연 ;
혹시 자기가 가진 여러개의 IP중에외부, 즉 인터넷에 접속된 IP
혹시 자기가 가진 여러개의 IP중에
외부, 즉 인터넷에 접속된 IP를 알아내는 방법은 어떤게 있을까요?
connect를 해보려니 마땅히 접속할 곳도 애매하고
그냥 자체적으로 알아낼 수 없을까요?
ioctlsocket을 써야할까요?
리눅스에서는 아는데 윈도우즈에서는 잘 모르겠습니다.
이미 다 나온 이야기이지만...예전에 정리해둔게 있어서...h
이미 다 나온 이야기이지만...
예전에 정리해둔게 있어서...
http://www.singlenote.net/wiki/wiki.php/ifconfigExample
댓글 달기