//***************************************************************************** // const char *NETWORK_GetHostByIPAddress( NETADDRESS_s Address ) { //gethostbyaddr(); struct hostent *hp; struct sockaddr_in socketAddress;// = (struct sockaddr_in *) (&sa); static char s_szName[256]; // Convert the IP address to a socket address. NETWORK_NetAddressToSocketAddress ( Address, socketAddress ); hp = gethostbyaddr( (char *) &(socketAddress.sin_addr), sizeof(socketAddress.sin_addr), AF_INET ); if ( hp ) strncpy ( s_szName, (char *)hp->h_name, sizeof(s_szName) - 1 ); else sprintf ( s_szName, "host_not_found" ); return s_szName; }
//***************************************************************************** // void NETWORK_LaunchPacket( NETBUFFER_s *pBuffer, NETADDRESS_s Address ) { LONG lNumBytes; INT iNumBytesOut; struct sockaddr_in SocketAddress; pBuffer->ulCurrentSize = NETWORK_CalcBufferSize( pBuffer ); // Nothing to do. if ( pBuffer->ulCurrentSize == 0 ) return; // Convert the IP address to a socket address. NETWORK_NetAddressToSocketAddress( Address, SocketAddress ); HUFFMAN_Encode( (unsigned char *)pBuffer->pbData, g_ucHuffmanBuffer, pBuffer->ulCurrentSize, &iNumBytesOut ); lNumBytes = sendto( g_NetworkSocket, (const char*)g_ucHuffmanBuffer, iNumBytesOut, 0, (struct sockaddr *)&SocketAddress, sizeof( SocketAddress )); // If sendto returns -1, there was an error. if ( lNumBytes == -1 ) { #ifdef __WIN32__ INT iError = WSAGetLastError( ); // Wouldblock is silent. if ( iError == WSAEWOULDBLOCK ) return; switch ( iError ) { case WSAEACCES: Printf( "NETWORK_LaunchPacket: Error #%d, WSAEACCES: Permission denied for address: %s\n", iError, NETWORK_AddressToString( Address )); return; case WSAEADDRNOTAVAIL: Printf( "NETWORK_LaunchPacket: Error #%d, WSAEADDRENOTAVAIL: Address %s not available\n", iError, NETWORK_AddressToString( Address )); return; case WSAEHOSTUNREACH: Printf( "NETWORK_LaunchPacket: Error #%d, WSAEHOSTUNREACH: Address %s unreachable\n", iError, NETWORK_AddressToString( Address )); return; default: Printf( "NETWORK_LaunchPacket: Error #%d\n", iError ); return; } #else if ( errno == EWOULDBLOCK ) return; if ( errno == ECONNREFUSED ) return; Printf( "NETWORK_LaunchPacket: %s\n", strerror( errno )); Printf( "NETWORK_LaunchPacket: Address %s\n", NETWORK_AddressToString( Address )); #endif } // Record this for our statistics window. if ( NETWORK_GetState( ) == NETSTATE_SERVER ) SERVER_STATISTIC_AddToOutboundDataTransfer( lNumBytes ); }