From 663aca26419773c200fd63f7dd3352afd3e56a38 Mon Sep 17 00:00:00 2001 From: Jocke Date: Wed, 9 Dec 2015 17:50:30 +0100 Subject: [PATCH] Moved client and server from header. Fixed so user are able to start a server and client on the same computer. Starting 2 servers on the same computer will probably still crash the newest server (Don't do it). --- include/Game/Game.h | 2 -- src/Engine/Network/Client.cpp | 19 ++++++++++++++----- src/Game/Game.cpp | 6 ++++-- 3 files changed, 18 insertions(+), 9 deletions(-) diff --git a/include/Game/Game.h b/include/Game/Game.h index 2763b4dd..fd4068da 100644 --- a/include/Game/Game.h +++ b/include/Game/Game.h @@ -36,8 +36,6 @@ private: RenderQueueFactory* m_RenderQueueFactory; // Network variables boost::thread m_NetworkThread; - Server m_Server; - Client m_Client; // Network methods void NetworkFunction(); // Network events diff --git a/src/Engine/Network/Client.cpp b/src/Engine/Network/Client.cpp index df418e06..24085352 100644 --- a/src/Engine/Network/Client.cpp +++ b/src/Engine/Network/Client.cpp @@ -206,11 +206,20 @@ void Client::ParseSnapshot(char* data, size_t length) int Client::Receive(char* data, size_t length) { - int bytesReceived = m_Socket.receive_from(boost - ::asio::buffer((void*)data, length), - m_ReceiverEndpoint, - 0); - return bytesReceived; + + try { + int bytesReceived = m_Socket.receive_from(boost + ::asio::buffer((void*)data, length), + m_ReceiverEndpoint, + 0); + return bytesReceived; + } catch (const std::exception& err) { + // To not spam "socket closed messages" + //if (std::string(err.what()).find("forcefully closed") != std::string::npos) { + std::cout << "Read from client crashed: " << err.what(); + //} + } + return 0; } int Client::CreateMessage(MessageType type, std::string message, char* data) diff --git a/src/Game/Game.cpp b/src/Game/Game.cpp index 5722eaf2..12a3a711 100644 --- a/src/Game/Game.cpp +++ b/src/Game/Game.cpp @@ -48,8 +48,8 @@ Game::Game(int argc, char* argv[]) Game::~Game() { // Call before to ensure that thread closes correctly. - m_Client.Close(); - m_Server.Close(); + //m_Client.Close(); + //m_Server.Close(); delete m_FrameStack; delete m_EventBroker; @@ -84,9 +84,11 @@ void Game::NetworkFunction() std::cout << "Start client or server? (c/s)" << std::endl; std::cin >> inputMessage; if (inputMessage == "c" || inputMessage == "C") { + Client m_Client; m_Client.Start(m_World, m_EventBroker); } if (inputMessage == "s" || inputMessage == "S") { + Server m_Server; m_Server.Start(m_World); } } \ No newline at end of file