검색을 시도했지만 작동중인 찾지 못했습니다. Windows에서 REAL 하드웨어 이더넷 컨트롤러와 연결된 IP 주소 얻기
는 현재 윈도우 이 지금은 기계의 실제 IP 주소를 얻을 필요 이상의 ONE 올바른 하드웨어 설치 eternet는 등 등 Hamachi를 가상 상자에 의한 제어 감지 할 수 있습니다. 내가 gethostbyname을 사용하여 그것을 시도했을 때 그것은 내 Hamachi 클라이언트의 IP 주소를 반환했습니다.이제 실제 IP 주소를 수신하려면 100 % 견고한 방법을 찾아야합니다. 모든 링크/팁/기사/방법 정말 고맙습니다.
편집 :
지금까지이 있어요 - 레미 Lebau에 의해 sugested 방법을하지만, 내가 원하는 방식으로 작동하지 않습니다 - 항상 127.0.0.1 반환 :
int main()
{
WSADATA WSA_info;
if (WSAStartup(MAKEWORD(2,2),&WSA_info)!=0)
{
std::cout << "Error with WSA.\n";
std::cin.get();
return -1;
}
SOCKADDR_IN adress;
adress.sin_family = AF_INET;
adress.sin_port = htons(80);
adress.sin_addr.S_un.S_addr = inet_addr("213.241.88.40"); //its google's IP adress - to chech it I used ping google.com in cmd (maybe there is somethign wrong with this)
SOCKET sock;
if ((sock = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP))== INVALID_SOCKET){
std::cout << "Error while creating socket." << std::endl;
closesocket(sock);
WSACleanup();
std::cin.get();
return -1;
}
if (connect(sock,(sockaddr*)&adress,sizeof(sockaddr))== SOCKET_ERROR) {
std::cout << "Couldnt connect." << std::endl;
closesocket(sock);
WSACleanup();
std::cin.get();
return -1;
}
sockaddr_in test;
int len = sizeof(test);
getsockname(sock,(struct sockaddr *) &test, &len);
std::cout << inet_ntoa(test.sin_addr);
std::cin.get();
}
기계에 2 개의 올바른 하드웨어 이더넷 컨트롤러가 있다면 어떻게 될까요? – liori
아마 http://stackoverflow.com/q/5213629/440558 –
의 중복 그게 너무 문제가있어. 소켓을 초기화하는 데 필요한 소켓이 필요합니다. – darekg11