void SocketLayer::GetMyIP( char ipList[ 10 ][ 16 ] ) { #if !defined(_PS3) char ac[ 80 ]; if ( gethostname( ac, sizeof( ac ) ) == -1 ) { #if defined(_WIN32) && !defined(_XBOX360) && defined(_DEBUG) DWORD dwIOError = GetLastError(); LPVOID messageBuffer; FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, dwIOError, MAKELANGID( LANG_NEUTRAL, SUBLANG_DEFAULT ), // Default language ( LPTSTR ) & messageBuffer, 0, NULL ); // something has gone wrong here... printf( "gethostname failed:Error code - %d\n%s", dwIOError, messageBuffer ); //Free the buffer. LocalFree( messageBuffer ); #endif return ; } struct hostent *phe = gethostbyname( ac ); if ( phe == 0 ) { #if defined(_WIN32) && !defined(_XBOX360) && defined(_DEBUG) DWORD dwIOError = GetLastError(); LPVOID messageBuffer; FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, dwIOError, MAKELANGID( LANG_NEUTRAL, SUBLANG_DEFAULT ), // Default language ( LPTSTR ) & messageBuffer, 0, NULL ); // something has gone wrong here... printf( "gethostbyname failed:Error code - %d\n%s", dwIOError, messageBuffer ); //Free the buffer. LocalFree( messageBuffer ); #endif return ; } for ( int i = 0; phe->h_addr_list[ i ] != 0 && i < 10; ++i ) { struct in_addr addr; memcpy( &addr, phe->h_addr_list[ i ], sizeof( struct in_addr ) ); //cout << "Address " << i << ": " << inet_ntoa(addr) << endl; strcpy( ipList[ i ], inet_ntoa( addr ) ); } #else union CellNetCtlInfo info; int errCode; if((errCode=cellNetCtlGetInfo(CELL_NET_CTL_INFO_IP_ADDRESS, &info)) >= 0){ memcpy(ipList[0], info.ip_address, sizeof(info.ip_address)); ipList[1][0]=0; } return; #endif }
void SocketLayer::GetMyIP( char ipList[ MAXIMUM_NUMBER_OF_INTERNAL_IDS ][ 16 ], unsigned int binaryAddresses[MAXIMUM_NUMBER_OF_INTERNAL_IDS] ) { #if !defined(_PS3) && !defined(__PS3__) && !defined(SN_TARGET_PS3) char ac[ 80 ]; if ( gethostname( ac, sizeof( ac ) ) == -1 ) { #if defined(_WIN32) && !defined(_XBOX) && !defined(X360) && defined(_DEBUG) DWORD dwIOError = GetLastError(); LPVOID messageBuffer; FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, dwIOError, MAKELANGID( LANG_NEUTRAL, SUBLANG_DEFAULT ), // Default language ( LPTSTR ) & messageBuffer, 0, NULL ); // something has gone wrong here... RAKNET_DEBUG_PRINTF( "gethostname failed:Error code - %d\n%s", dwIOError, messageBuffer ); //Free the buffer. LocalFree( messageBuffer ); #endif return ; } struct hostent *phe = gethostbyname( ac ); if ( phe == 0 ) { #if defined(_WIN32) && !defined(_XBOX) && !defined(X360) && defined(_DEBUG) DWORD dwIOError = GetLastError(); LPVOID messageBuffer; FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, dwIOError, MAKELANGID( LANG_NEUTRAL, SUBLANG_DEFAULT ), // Default language ( LPTSTR ) & messageBuffer, 0, NULL ); // something has gone wrong here... RAKNET_DEBUG_PRINTF( "gethostbyname failed:Error code - %d\n%s", dwIOError, messageBuffer ); //Free the buffer. LocalFree( messageBuffer ); #endif return ; } struct in_addr addr[ MAXIMUM_NUMBER_OF_INTERNAL_IDS ]; int idx; for ( idx = 0; idx < MAXIMUM_NUMBER_OF_INTERNAL_IDS; ++idx ) { if (phe->h_addr_list[ idx ] == 0) break; memcpy( &addr[idx], phe->h_addr_list[ idx ], sizeof( struct in_addr ) ); //cout << "Address " << i << ": " << inet_ntoa(addr) << endl; #if defined(_WIN32) binaryAddresses[idx]=addr[idx].S_un.S_addr; #else binaryAddresses[idx]=addr[idx].s_addr; #endif strcpy( ipList[ idx ], inet_ntoa( addr[idx] ) ); } for ( ; idx < MAXIMUM_NUMBER_OF_INTERNAL_IDS; ++idx ) { ipList[idx][0]=0; } #else union CellNetCtlInfo info; int errCode; if((errCode=cellNetCtlGetInfo(CELL_NET_CTL_INFO_IP_ADDRESS, &info)) >= 0){ memcpy(ipList[0], info.ip_address, sizeof(info.ip_address)); ipList[1][0]=0; } return; #endif }