2012-06-12 3 views
1

Objective-C에서 기본 게이트웨이 IP 및 MAC 주소를 얻으려면 어떻게합니까?Objective-C : 기본 게이트웨이 정보 얻기

지금 당장은 arpa/inet.h을 사용하는 IP를 가져 오는 기능을 만들 수 있었지만 기본 게이트웨이 IP 및 MAC 주소를 얻는 방법을 모릅니다.

NSString* GetMyIP(NSString* inf) { 
    NSString *address = @"error"; 
    struct ifaddrs *interfaces = NULL; 
    struct ifaddrs *temp_addr = NULL; 
    int success = 0; 

    // retrieve the current interfaces - returns 0 on success 
    success = getifaddrs(&interfaces); 
    if (success == 0) 
    { 
     // Loop through linked list of interfaces 
     temp_addr = interfaces; 
     while(temp_addr != NULL) 
     { 
      if(temp_addr->ifa_addr->sa_family == AF_INET) 
      { 
       // Check if interface! 
       if([[NSString stringWithUTF8String:temp_addr->ifa_name] isEqualToString:inf]) 
       { 
        // Get NSString from C String 
        address = [NSString stringWithUTF8String:inet_ntoa(((struct sockaddr_in *)temp_addr->ifa_addr)->sin_addr)]; 
       } 
      } 
      temp_addr = temp_addr->ifa_next; 
     } 
    } 

    freeifaddrs(interfaces); 
    return address; 
} 

나는 arp 잠시 동안 netstat 사용하지만 그들은 항상

다른 더 "애플 웨이 '얻을 수 있는가 ... 예상대로 작동하고 위험 솔루션은 이해할 수도로하지 않습니다 이런 종류의 정보? arpa/inet.h을 사용하지 않고? 예?

감사합니다.

답변

1

This answer은 OSX에서 인터페이스의 MAC 주소를 얻는 방법을 설명합니다.

기본 게이트웨이는 라우팅 테이블에 등록되며 네트워크 인터페이스와 직접 연결되지 않습니다. 기본값 인 게이트웨이 (예 : 0.0.0.0의 게이트웨이)가 신경 써야 할 유일한 포트가 아니므로 제한된 주소 범위에 맞게 라우터를 설정할 수 있습니다. (또한 다른 우선 순위가있는 기본 게이트웨이 또는 다른 게이트웨이가있을 수 있습니다.)

라우팅 테이블은 route(4) manpage에 문서화되어 있습니다.이 라우팅 테이블은 응용 프로그램에서 라우팅 테이블을 검색 할 수있는 충분한 정보를 제공합니다.

+0

내 기본 게이트웨이 MAC를 찾고 있는데 ... 내 것이 아닙니다 ... 어쨌든 고맙습니다. – TCB13

+0

아, 알겠습니다. 일단 게이트웨이의 IP가 있으면 실제로 ARP를 거쳐야합니다. – pmdj

+0

나는 터미널에서 ARP가 나에게 라우터에 의해보고 된 MAC과 다른 MAC을 발견했다. 이상하게 보임 : S. – TCB13