void Client::_ReadNetworkData() { char buffer[NETWORK_BUFFER_LENGTH]; memset(buffer, 0, sizeof(buffer)); SocketAddress addr; memset(&addr, 0, sizeof(SocketAddress)); int bytes_recv = 0; while(bytes_recv != -1 ) { bytes_recv = DarkNet::Recieve(m_socket,buffer, sizeof(buffer),addr); if(bytes_recv <= 0) continue; #if defined (_XBOX) //Make sure it has XnetInfo as header PacketHeader header = DarkNet::ExtractHeader(buffer,bytes_recv); if(header.m_darknet_xId == -1) continue; if(!m_isConnected) if(XNetRegisterKey(&header.m_xnkid,&header.m_xnkey) != 0) OUTPUT("FAILED To Register the key!"); //Else get the socketaddress DarkNet::XNAddrToInAddr(header.m_xnaddr, header.m_xnkid, addr); #endif if(IsServer(addr)) { StoreData(buffer); } else if(strcmp(buffer, CONNECTION_FORMED) == 0) { OnConnectionFormed(addr); } else _DataCallbackFunc(buffer,&addr); } }
bool Server::init( void ) { m_Timestamp = 0; m_connected = false; m_max_connections = 0; if( App::init() == false ) { return false; } #ifdef __PLAT_XBOX__ //DWORD dwStatus = XNetGetEthernetLinkStatus(); //if( dwStatus == 0 ) //{ //return false; //} // Get host XNADDR (asynchronous). while( XNetGetTitleXnAddr/*XNetGetDebugXnAddr*/( &m_XboxAddr ) == XNET_GET_XNADDR_PENDING ) { // Can do other work/rendering here ... } // Create session key and register the session with the SNL. XNetCreateKey( &m_XboxKeyId, &m_XboxKey ); XNetRegisterKey( &m_XboxKeyId, &m_XboxKey ); // != NO_ERROR #endif m_Dispatcher.AddHandler( MSG_ID_CONNECTION_REQ, handle_connection_request, mHANDLE_FOREIGN | mHANDLE_LATE, NULL, HIGHEST_PRIORITY ); m_Dispatcher.AddHandler( MSG_ID_TIMESTAMP, handle_timestamp, mHANDLE_LATE | mHANDLE_FOREIGN ); m_Dispatcher.AddHandler( MSG_ID_DISCONN_REQ, handle_disconn_req,mHANDLE_LATE, NULL, HIGHEST_PRIORITY ); return true; }