103 lines
2.2 KiB
C++
103 lines
2.2 KiB
C++
#include "global.h"
|
|
/*
|
|
-----------------------------------------------------------------------------
|
|
Class: NetworkManager
|
|
|
|
Desc: See Header.
|
|
|
|
Copyright (c) 2001-2003 by the person(s) listed below. All rights reserved.
|
|
Kevin Slaughter
|
|
-----------------------------------------------------------------------------
|
|
*/
|
|
|
|
#include "GameState.h"
|
|
#include "NetworkManager.h"
|
|
#include "RageLog.h"
|
|
#include "RageException.h"
|
|
#include "SongManager.h"
|
|
NetworkManager* NETWORKMAN = NULL;
|
|
|
|
|
|
NetworkManager::NetworkManager()
|
|
{
|
|
LOG->Trace("NetworkManager::NetworkManager");
|
|
if( SDLNet_Init()==-1 )
|
|
throw;
|
|
}
|
|
|
|
NetworkManager::~NetworkManager()
|
|
{
|
|
LOG->Trace("NetworkManager::~NetworkManager");
|
|
SDLNet_Quit();
|
|
}
|
|
|
|
bool NetworkManager::Connect()
|
|
{
|
|
LOG->Trace("NetworkManager::Connect()");
|
|
RageException* Bitcher;
|
|
|
|
IPaddress ip;
|
|
TCPsocket tcpsock;
|
|
SDLNet_SocketSet socketset;
|
|
|
|
/* Allocate the socket set for polling the network */
|
|
socketset = SDLNet_AllocSocketSet(2);
|
|
if ( socketset == NULL )
|
|
Bitcher->Throw("Couldn't create socket set: %s\n",SDLNet_GetError());
|
|
SDLNet_TCP_AddSocket(socketset, tcpsock);
|
|
|
|
|
|
|
|
if(SDLNet_ResolveHost(&ip,"127.0.0.1",6288)) // Establish a connection.
|
|
{
|
|
LOG->Trace("SDLNet_ResolveHost: %s\n", SDLNet_GetError());
|
|
Bitcher->Throw("SDLNet_ResolveHost() FAILED. --> %s", SDLNet_GetError());
|
|
throw;
|
|
}
|
|
|
|
tcpsock=SDLNet_UDP_Open(&ip);
|
|
if(!tcpsock) // Make sure we opened a valid connection.
|
|
Bitcher->Throw("NetworkManager::SDLNet_TCP_Open: %s\n", SDLNet_GetError());
|
|
|
|
|
|
|
|
// Test send & recv data //
|
|
Uint8 data[512];
|
|
char* test[1+1+256];
|
|
// int pos
|
|
int len;
|
|
// int used;
|
|
|
|
/* Has the connection been lost with the server? */
|
|
test[3] = "$";
|
|
SDLNet_TCP_Send(tcpsock, test, 4);
|
|
LOG->Trace("\n\n\nDATA BEING SENT..");
|
|
len = SDLNet_TCP_Recv(tcpsock, (char *)data, 512);
|
|
LOG->Trace("\n\n\nDATA RECEIVED!!!");
|
|
/* if ( len <= 0 ) {
|
|
//SDLNet_TCP_DelSocket(socketset, tcpsock);
|
|
SDLNet_TCP_Close(tcpsock);
|
|
tcpsock = NULL;
|
|
LOG->Trace("NetworkManager:: Connection lost!\n");
|
|
}
|
|
else
|
|
{
|
|
pos = 0;
|
|
while ( len > 0 )
|
|
{
|
|
used = 1;
|
|
pos += used;
|
|
len -= used;
|
|
if ( used == 0 )
|
|
{
|
|
// We might lose data here.. oh well,
|
|
// we got a corrupt packet from server
|
|
|
|
len = 0;
|
|
}
|
|
}
|
|
}
|
|
*/
|
|
return true;
|
|
}
|