Exemplo n.º 1
0
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);
  }
}
Exemplo n.º 2
0
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;
}