28#include "../../devices/PNetwork.h"
29#include "../../utility/PError.h"
30#include "../../libs/PEBLEnvironment.h"
57 mAddress =
new IPaddress;
73void PlatformNetwork::Init()
75 std::cerr <<
"Initializing network\n";
76 int val = SDLNet_Init();
80 std::cerr <<
"Network System Initialized\n";
107 mAddress->port = SDL_SwapBE16(
mPort);
115Variant PlatformNetwork::GetMyIPAddress()
121 mMyAddress =
new IPaddress;
122 SDLNet_ResolveHost(mMyAddress,
NULL,mAddress->port);
127Variant PlatformNetwork::GetIPAddress()
133 return "<UNKNOWN ADDRESS>";
144 SDLNet_ResolveHost(mAddress,
157 Uint32 host = address->host;
164void PlatformNetwork::Open()
167 if(mAddress->host == 0)
170 mSocket = SDLNet_TCP_Open(mAddress);
186bool PlatformNetwork::CheckForConnection()
206 mSocket = SDLNet_TCP_Accept(mListener);
223bool PlatformNetwork::CreateListener()
228 IPaddress * tmpAddress =
new IPaddress;
229 tmpAddress->host = INADDR_ANY;
230 tmpAddress->port = SDL_SwapBE16(
mPort);
234 mListener = SDLNet_TCP_Open(tmpAddress);
243bool PlatformNetwork::Accept(
int mstimeout)
250 int now = SDL_GetTicks();
251 int end = now + mstimeout;
253 while(mSocket ==
NULL & SDL_GetTicks()<end )
255 mSocket = SDLNet_TCP_Accept(mListener);
266 SDLNet_TCP_Close(mListener);
276 return mSocket!=
NULL;
284bool PlatformNetwork::Accept()
289 IPaddress * tmpAddress =
new IPaddress;
290 tmpAddress->host = INADDR_ANY;
291 tmpAddress->port = SDL_SwapBE16(
mPort);
295 TCPsocket listener = SDLNet_TCP_Open(tmpAddress);
302 while(mSocket ==
NULL)
304 mSocket = SDLNet_TCP_Accept(listener);
315 SDLNet_TCP_Close(listener);
325 return mSocket!=
NULL;
329void PlatformNetwork::Close()
332 SDLNet_TCP_Close(mSocket);
338bool PlatformNetwork::SendString(std::string data)
345 buffer = strdup(data.c_str());
346 unsigned long int sent = SDLNet_TCP_Send(mSocket, buffer,
347 (
int)(data.length()));
350 if(sent != (
int)data.length())
352 std::cerr <<
"Tried to send: " << data.length() << std::endl;
353 std::cerr <<
"Succeeded at: " << sent << std::endl;
369bool PlatformNetwork::SendByte(
int byte)
375 int sent = SDLNet_TCP_Send(mSocket, &
byte,1);
387std::string PlatformNetwork::Receive(
int length)
389 char * message =
NULL;
392 message =
new char[length+1];
397 int result = SDLNet_TCP_Recv(mSocket,message+pos,length);
413 message[length] =
'\0';
419 std::string ret = std::string(message);
428 out <<
"<Network Connection: " <<
mHostName <<
">";
virtual void SetHostIP(unsigned int host)
virtual void SetOpen(bool open)
virtual Variant ConvertAddress(unsigned long int address)
virtual void SetHostName(std::string hostname)
virtual void SetPort(unsigned int port)
void SignalWarning(const std::string &message)
void SignalFatalError(const std::string &message)