diff --git a/client/lobby.cpp b/client/lobby.cpp index bc790f8..8b2cbec 100644 --- a/client/lobby.cpp +++ b/client/lobby.cpp @@ -9,25 +9,17 @@ using namespace std; //Public access members //------------------------- -Lobby::Lobby(ConfigUtility* cUtil, SurfaceManager* sMgr, TCPSocket* sock) { +Lobby::Lobby(ConfigUtility* cUtil, SurfaceManager* sMgr) { #ifdef DEBUG cout << "entering Lobby" << endl; #endif configUtil = cUtil; surfaceMgr = sMgr; - socket = sock; //ping the network, ping the preset "phone home" servers //generate the server list //eventually - try { - socket->Open(configUtil->CString("ip"), configUtil->Integer("port")); - } - catch(exception& e) { - cerr << "Network Error: " << e.what() << endl; - } - SetNextScene(SceneList::TESTSYSTEMS); } @@ -84,5 +76,3 @@ void Lobby::KeyDown(SDL_KeyboardEvent const& key) { void Lobby::KeyUp(SDL_KeyboardEvent const& key) { // } - - diff --git a/client/lobby.hpp b/client/lobby.hpp index a9eac7d..7f7f858 100644 --- a/client/lobby.hpp +++ b/client/lobby.hpp @@ -5,12 +5,11 @@ #include "config_utility.hpp" #include "surface_manager.hpp" -#include "network.hpp" class Lobby : public BaseScene { public: //Public access members - Lobby(ConfigUtility*, SurfaceManager*, TCPSocket*); + Lobby(ConfigUtility*, SurfaceManager*); virtual ~Lobby(); protected: @@ -30,7 +29,6 @@ protected: //members ConfigUtility* configUtil; SurfaceManager* surfaceMgr; - TCPSocket* socket; }; #endif diff --git a/client/network.cpp b/client/network.cpp deleted file mode 100644 index b4a2e29..0000000 --- a/client/network.cpp +++ /dev/null @@ -1,39 +0,0 @@ -/* Copyright: (c) Kayne Ruse 2013 - * - * This software is provided 'as-is', without any express or implied - * warranty. In no event will the authors be held liable for any damages - * arising from the use of this software. - * - * Permission is granted to anyone to use this software for any purpose, - * including commercial applications, and to alter it and redistribute it - * freely, subject to the following restrictions: - * - * 1. The origin of this software must not be misrepresented; you must not - * claim that you wrote the original software. If you use this software - * in a product, an acknowledgment in the product documentation would be - * appreciated but is not required. - * - * 2. Altered source versions must be plainly marked as such, and must not be - * misrepresented as being the original software. - * - * 3. This notice may not be removed or altered from any source - * distribution. -*/ -#include "network.hpp" - -#include - -void NetworkInit() { - WSADATA wsaData; // if this doesn't work - //WSAData wsaData; // then try this instead - - // MAKEWORD(1,1) for Winsock 1.1, MAKEWORD(2,0) for Winsock 2.0: - - if (WSAStartup(MAKEWORD(2,0), &wsaData) != 0) { - throw(std::runtime_error("WSAStartup failed")); - } -} - -void NetworkQuit() { - WSACleanup(); -} diff --git a/client/network.hpp b/client/network.hpp deleted file mode 100644 index 7c8bffe..0000000 --- a/client/network.hpp +++ /dev/null @@ -1,107 +0,0 @@ -/* Copyright: (c) Kayne Ruse 2013 - * - * This software is provided 'as-is', without any express or implied - * warranty. In no event will the authors be held liable for any damages - * arising from the use of this software. - * - * Permission is granted to anyone to use this software for any purpose, - * including commercial applications, and to alter it and redistribute it - * freely, subject to the following restrictions: - * - * 1. The origin of this software must not be misrepresented; you must not - * claim that you wrote the original software. If you use this software - * in a product, an acknowledgment in the product documentation would be - * appreciated but is not required. - * - * 2. Altered source versions must be plainly marked as such, and must not be - * misrepresented as being the original software. - * - * 3. This notice may not be removed or altered from any source - * distribution. -*/ -#ifndef NETWORK_HPP_ -#define NETWORK_HPP_ - -#include - -#define WIN32_LEAN_AND_MEAN -#define _WIN32_WINNT 0x501 -#include -#include - -void NetworkInit(); -void NetworkQuit(); - -class TCPSocket { -public: - TCPSocket(); - TCPSocket(const char* ip, int port); - ~TCPSocket(); - - /* param 1: ip address to connect to - * param 2: port to open the server socket on - */ - void Open(const char* ip, int port); - void Close(); - - /* Send() and Receive() - * param 1: data to be sent/received - * param 2: length/maxlength of the data - * param 3: flags to the internal function - * return: - * the amount of data sent/received (not necessarily the same value as len/maxlen) - */ - int Send(const void* data, int len, int flags = 0); - int Recv(void* data, int maxlen, int flags = 0); -private: - SOCKET sock; - friend class TCPServerSocket; -}; - -class TCPServerSocket { -public: - TCPServerSocket(); - TCPServerSocket(int port); - ~TCPServerSocket(); - - void Open(int port); - void Close(); - - int Accept(TCPSocket*, int uSeconds = 0); -private: - SOCKET sock; -}; - -//TODO: Write the UDP systems -// -//class UDPRemote { -//public: -// UDPRemote(); -// UDPRemote(const char* ip, int port); -// -// /* param 1: ip of the remote to connect to, null to clear -// * param 2: port of the remote to connect to -// */ -// void Set(const char* ip, int port); -// //TODO: Get? -//private: -// sockaddr addr; -// friend class UDPSocket; -//}; -// -//class UDPSocket { -//public: -// UDPSocket(); -// UDPSocket(int port); -// ~UDPSocket(); -// -// int Open(int port); -// void Close(); -// -// int Send(const void* data, int len, UDPRemote* rem, int flags = 0); -// int Recv(void* data, int maxlen, UDPRemote* rem, int flags = 0); -//private: -// SOCKET sock; -//}; - -#endif diff --git a/client/network_tcp.cpp b/client/network_tcp.cpp deleted file mode 100644 index 93d0ad6..0000000 --- a/client/network_tcp.cpp +++ /dev/null @@ -1,184 +0,0 @@ -/* Copyright: (c) Kayne Ruse 2013 - * - * This software is provided 'as-is', without any express or implied - * warranty. In no event will the authors be held liable for any damages - * arising from the use of this software. - * - * Permission is granted to anyone to use this software for any purpose, - * including commercial applications, and to alter it and redistribute it - * freely, subject to the following restrictions: - * - * 1. The origin of this software must not be misrepresented; you must not - * claim that you wrote the original software. If you use this software - * in a product, an acknowledgment in the product documentation would be - * appreciated but is not required. - * - * 2. Altered source versions must be plainly marked as such, and must not be - * misrepresented as being the original software. - * - * 3. This notice may not be removed or altered from any source - * distribution. -*/ -#include "network.hpp" - -#include -#include - -/* TCPSocket definition -*/ - -TCPSocket::TCPSocket() { - sock = INVALID_SOCKET; -} - -TCPSocket::TCPSocket(const char* ip, int port) { - Open(ip, port); -} - -TCPSocket::~TCPSocket() { - Close(); -} - -void TCPSocket::Open(const char* ip, int port) { - addrinfo *ptr = nullptr, hints; - char buf[100]; - sprintf(buf, "%d",port); //std compliant itoa() - - memset(&hints, 0, sizeof(hints)); - - hints.ai_family = AF_UNSPEC; - hints.ai_socktype = SOCK_STREAM; - hints.ai_protocol = IPPROTO_TCP; - - if (getaddrinfo(ip, buf, &hints, &ptr)) { - throw(std::runtime_error("TCPSocket failed to access address info")); - } - - sock = socket(ptr->ai_family, ptr->ai_socktype, ptr->ai_protocol); - - if (sock == INVALID_SOCKET) { - freeaddrinfo(ptr); - throw(std::runtime_error("Failed to create a TCPSocket")); - } - - bool connected = false; - for(addrinfo *it = ptr; it; it = it->ai_next) { - if (!connect(sock, it->ai_addr, it->ai_addrlen)) { - connected = true; - break; - } - } - - freeaddrinfo(ptr); - - if (!connected) { - closesocket(sock); - sock = INVALID_SOCKET; - throw(std::runtime_error("Failed to connect a TCPSocket")); - } -} - -void TCPSocket::Close() { - closesocket(sock); - sock = INVALID_SOCKET; -} - -int TCPSocket::Send(const void* data, int len, int flags) { - if (sock == INVALID_SOCKET) { - throw(std::runtime_error("Failed to send, TCPSocket is invalid")); - } - int ret = send(sock, (const char*)data, len, flags); - if (ret == SOCKET_ERROR) { - Close(); - throw(std::runtime_error("Failed to send, unknown error, TCPSocket automatically closed")); - } - return ret; -} - -int TCPSocket::Recv(void* data, int maxlen, int flags) { - if (sock == INVALID_SOCKET) { - throw(std::runtime_error("Failed to receive, TCPSocket is invalid")); - } - int ret = recv(sock, (char*)data, maxlen, flags); - if (ret == SOCKET_ERROR) { - Close(); - throw(std::runtime_error("Failed to receive, unknown error, TCPSocket automatically closed")); - } - return ret; -} - -/* TCPServerSocket definition -*/ - -TCPServerSocket::TCPServerSocket() { - sock = INVALID_SOCKET; -} - -TCPServerSocket::TCPServerSocket(int port) { - Open(port); -} - -TCPServerSocket::~TCPServerSocket() { - Close(); -} - -void TCPServerSocket::Open(int port) { - addrinfo *ptr = nullptr, hints; - char buf[100]; - sprintf(buf, "%d",port); //std compliant itoa() - - memset(&hints, 0, sizeof(hints)); - hints.ai_family = AF_INET; - hints.ai_socktype = SOCK_STREAM; - hints.ai_protocol = IPPROTO_TCP; - hints.ai_flags = AI_PASSIVE; - - if (getaddrinfo(nullptr, buf, &hints, &ptr)) { - throw(std::runtime_error("TCPServerSocket failed to access address info")); - } - - sock = socket(ptr->ai_family, ptr->ai_socktype, ptr->ai_protocol); - - if (sock == INVALID_SOCKET) { - freeaddrinfo(ptr); - throw(std::runtime_error("Failed to create a TCPServerSocket")); - } - - if (bind(sock, ptr->ai_addr, ptr->ai_addrlen) == SOCKET_ERROR) { - closesocket(sock); - freeaddrinfo(ptr); - throw(std::runtime_error("Failed to bind TCPServerSocket")); - } - - freeaddrinfo(ptr); -} - -void TCPServerSocket::Close() { - closesocket(sock); -} - -int TCPServerSocket::Accept(TCPSocket* s, int uSeconds) { - if (listen(sock, SOMAXCONN) == SOCKET_ERROR) { - throw(std::runtime_error("TCPServerSocket: listen() error")); - } - - //file descriptor sets are to prevent blocking - fd_set readfds; - timeval tv = {0, uSeconds}; - - FD_ZERO(&readfds); - FD_SET(sock, &readfds); - - if (select(0, &readfds, nullptr, nullptr, &tv) == SOCKET_ERROR) { - throw(std::runtime_error("TCPServerSocket: select() error")); - } - - //I don't want this to block - if (FD_ISSET(sock, &readfds)) { - if ((s->sock = accept(sock, nullptr, nullptr)) == INVALID_SOCKET) { - throw(std::runtime_error("TCPServerSocket: accept() error")); - } - return 1; - } - return 0; -} diff --git a/client/network_udp.cpp b/client/network_udp.cpp deleted file mode 100644 index 39ce01d..0000000 --- a/client/network_udp.cpp +++ /dev/null @@ -1,23 +0,0 @@ -/* Copyright: (c) Kayne Ruse 2013 - * - * This software is provided 'as-is', without any express or implied - * warranty. In no event will the authors be held liable for any damages - * arising from the use of this software. - * - * Permission is granted to anyone to use this software for any purpose, - * including commercial applications, and to alter it and redistribute it - * freely, subject to the following restrictions: - * - * 1. The origin of this software must not be misrepresented; you must not - * claim that you wrote the original software. If you use this software - * in a product, an acknowledgment in the product documentation would be - * appreciated but is not required. - * - * 2. Altered source versions must be plainly marked as such, and must not be - * misrepresented as being the original software. - * - * 3. This notice may not be removed or altered from any source - * distribution. -*/ -#include "network.hpp" - diff --git a/client/scene_manager.cpp b/client/scene_manager.cpp index 43ab804..59257ba 100644 --- a/client/scene_manager.cpp +++ b/client/scene_manager.cpp @@ -38,8 +38,6 @@ void SceneManager::Init() { configUtil.Load("rsc/config.cfg"); - NetworkInit(); - //set the screen from the config file int flags = SDL_HWSURFACE|SDL_DOUBLEBUF; if (configUtil.Boolean("screen.f")) { @@ -68,7 +66,6 @@ void SceneManager::Proc() { void SceneManager::Quit() { UnloadScene(); - NetworkQuit(); SDL_Quit(); } @@ -83,7 +80,7 @@ void SceneManager::LoadScene(SceneList sceneIndex) { //add scene creation calls here #ifdef DEBUG case SceneList::TESTSYSTEMS: - activeScene = new TestSystems(&configUtil, &surfaceMgr, &socket); + activeScene = new TestSystems(&configUtil, &surfaceMgr); break; #endif @@ -98,7 +95,7 @@ void SceneManager::LoadScene(SceneList sceneIndex) { activeScene = new InGame(&configUtil, &surfaceMgr); break; case SceneList::LOBBY: - activeScene = new Lobby(&configUtil, &surfaceMgr, &socket); + activeScene = new Lobby(&configUtil, &surfaceMgr); break; #ifdef DEBUG diff --git a/client/scene_manager.hpp b/client/scene_manager.hpp index adc2508..4488d4d 100644 --- a/client/scene_manager.hpp +++ b/client/scene_manager.hpp @@ -6,7 +6,6 @@ #include "config_utility.hpp" #include "surface_manager.hpp" -#include "network.hpp" #include "SDL/SDL.h" @@ -29,7 +28,6 @@ private: ConfigUtility configUtil; SurfaceManager surfaceMgr; - TCPSocket socket; }; #endif diff --git a/client/test_systems.cpp b/client/test_systems.cpp index 6476d2d..221f75f 100644 --- a/client/test_systems.cpp +++ b/client/test_systems.cpp @@ -8,13 +8,12 @@ using namespace std; //Public access members //------------------------- -TestSystems::TestSystems(ConfigUtility* cUtil, SurfaceManager* sMgr, TCPSocket* sock) { +TestSystems::TestSystems(ConfigUtility* cUtil, SurfaceManager* sMgr) { #ifdef DEBUG cout << "entering TestSystems" << endl; #endif configUtil = cUtil; surfaceMgr = sMgr; - socket = sock; playerCounter = currentPlayer = 0; @@ -28,7 +27,6 @@ TestSystems::TestSystems(ConfigUtility* cUtil, SurfaceManager* sMgr, TCPSocket* TestSystems::~TestSystems() { playerMgr.DeleteAll(); - socket->Close(); #ifdef DEBUG cout << "leaving TestSystems" << endl; #endif @@ -165,6 +163,5 @@ void TestSystems::SwitchToPlayer(int index) { } void TestSystems::SendMessage(std::string s) { - s += ';'; - socket->Send(s.c_str(), s.length()); + // } \ No newline at end of file diff --git a/client/test_systems.hpp b/client/test_systems.hpp index 0906278..6f333a0 100644 --- a/client/test_systems.hpp +++ b/client/test_systems.hpp @@ -5,7 +5,6 @@ #include "config_utility.hpp" #include "surface_manager.hpp" -#include "network.hpp" #include "player_manager.hpp" #include "delta.hpp" @@ -17,7 +16,7 @@ class TestSystems : public BaseScene { public: //Public access members - TestSystems(ConfigUtility*, SurfaceManager*, TCPSocket*); + TestSystems(ConfigUtility*, SurfaceManager*); virtual ~TestSystems(); protected: @@ -42,7 +41,6 @@ protected: //members ConfigUtility* configUtil; SurfaceManager* surfaceMgr; - TCPSocket* socket; PlayerManager playerMgr; diff --git a/server/network.cpp b/server/network.cpp deleted file mode 100644 index b4a2e29..0000000 --- a/server/network.cpp +++ /dev/null @@ -1,39 +0,0 @@ -/* Copyright: (c) Kayne Ruse 2013 - * - * This software is provided 'as-is', without any express or implied - * warranty. In no event will the authors be held liable for any damages - * arising from the use of this software. - * - * Permission is granted to anyone to use this software for any purpose, - * including commercial applications, and to alter it and redistribute it - * freely, subject to the following restrictions: - * - * 1. The origin of this software must not be misrepresented; you must not - * claim that you wrote the original software. If you use this software - * in a product, an acknowledgment in the product documentation would be - * appreciated but is not required. - * - * 2. Altered source versions must be plainly marked as such, and must not be - * misrepresented as being the original software. - * - * 3. This notice may not be removed or altered from any source - * distribution. -*/ -#include "network.hpp" - -#include - -void NetworkInit() { - WSADATA wsaData; // if this doesn't work - //WSAData wsaData; // then try this instead - - // MAKEWORD(1,1) for Winsock 1.1, MAKEWORD(2,0) for Winsock 2.0: - - if (WSAStartup(MAKEWORD(2,0), &wsaData) != 0) { - throw(std::runtime_error("WSAStartup failed")); - } -} - -void NetworkQuit() { - WSACleanup(); -} diff --git a/server/network.hpp b/server/network.hpp deleted file mode 100644 index 7c8bffe..0000000 --- a/server/network.hpp +++ /dev/null @@ -1,107 +0,0 @@ -/* Copyright: (c) Kayne Ruse 2013 - * - * This software is provided 'as-is', without any express or implied - * warranty. In no event will the authors be held liable for any damages - * arising from the use of this software. - * - * Permission is granted to anyone to use this software for any purpose, - * including commercial applications, and to alter it and redistribute it - * freely, subject to the following restrictions: - * - * 1. The origin of this software must not be misrepresented; you must not - * claim that you wrote the original software. If you use this software - * in a product, an acknowledgment in the product documentation would be - * appreciated but is not required. - * - * 2. Altered source versions must be plainly marked as such, and must not be - * misrepresented as being the original software. - * - * 3. This notice may not be removed or altered from any source - * distribution. -*/ -#ifndef NETWORK_HPP_ -#define NETWORK_HPP_ - -#include - -#define WIN32_LEAN_AND_MEAN -#define _WIN32_WINNT 0x501 -#include -#include - -void NetworkInit(); -void NetworkQuit(); - -class TCPSocket { -public: - TCPSocket(); - TCPSocket(const char* ip, int port); - ~TCPSocket(); - - /* param 1: ip address to connect to - * param 2: port to open the server socket on - */ - void Open(const char* ip, int port); - void Close(); - - /* Send() and Receive() - * param 1: data to be sent/received - * param 2: length/maxlength of the data - * param 3: flags to the internal function - * return: - * the amount of data sent/received (not necessarily the same value as len/maxlen) - */ - int Send(const void* data, int len, int flags = 0); - int Recv(void* data, int maxlen, int flags = 0); -private: - SOCKET sock; - friend class TCPServerSocket; -}; - -class TCPServerSocket { -public: - TCPServerSocket(); - TCPServerSocket(int port); - ~TCPServerSocket(); - - void Open(int port); - void Close(); - - int Accept(TCPSocket*, int uSeconds = 0); -private: - SOCKET sock; -}; - -//TODO: Write the UDP systems -// -//class UDPRemote { -//public: -// UDPRemote(); -// UDPRemote(const char* ip, int port); -// -// /* param 1: ip of the remote to connect to, null to clear -// * param 2: port of the remote to connect to -// */ -// void Set(const char* ip, int port); -// //TODO: Get? -//private: -// sockaddr addr; -// friend class UDPSocket; -//}; -// -//class UDPSocket { -//public: -// UDPSocket(); -// UDPSocket(int port); -// ~UDPSocket(); -// -// int Open(int port); -// void Close(); -// -// int Send(const void* data, int len, UDPRemote* rem, int flags = 0); -// int Recv(void* data, int maxlen, UDPRemote* rem, int flags = 0); -//private: -// SOCKET sock; -//}; - -#endif diff --git a/server/network_tcp.cpp b/server/network_tcp.cpp deleted file mode 100644 index 93d0ad6..0000000 --- a/server/network_tcp.cpp +++ /dev/null @@ -1,184 +0,0 @@ -/* Copyright: (c) Kayne Ruse 2013 - * - * This software is provided 'as-is', without any express or implied - * warranty. In no event will the authors be held liable for any damages - * arising from the use of this software. - * - * Permission is granted to anyone to use this software for any purpose, - * including commercial applications, and to alter it and redistribute it - * freely, subject to the following restrictions: - * - * 1. The origin of this software must not be misrepresented; you must not - * claim that you wrote the original software. If you use this software - * in a product, an acknowledgment in the product documentation would be - * appreciated but is not required. - * - * 2. Altered source versions must be plainly marked as such, and must not be - * misrepresented as being the original software. - * - * 3. This notice may not be removed or altered from any source - * distribution. -*/ -#include "network.hpp" - -#include -#include - -/* TCPSocket definition -*/ - -TCPSocket::TCPSocket() { - sock = INVALID_SOCKET; -} - -TCPSocket::TCPSocket(const char* ip, int port) { - Open(ip, port); -} - -TCPSocket::~TCPSocket() { - Close(); -} - -void TCPSocket::Open(const char* ip, int port) { - addrinfo *ptr = nullptr, hints; - char buf[100]; - sprintf(buf, "%d",port); //std compliant itoa() - - memset(&hints, 0, sizeof(hints)); - - hints.ai_family = AF_UNSPEC; - hints.ai_socktype = SOCK_STREAM; - hints.ai_protocol = IPPROTO_TCP; - - if (getaddrinfo(ip, buf, &hints, &ptr)) { - throw(std::runtime_error("TCPSocket failed to access address info")); - } - - sock = socket(ptr->ai_family, ptr->ai_socktype, ptr->ai_protocol); - - if (sock == INVALID_SOCKET) { - freeaddrinfo(ptr); - throw(std::runtime_error("Failed to create a TCPSocket")); - } - - bool connected = false; - for(addrinfo *it = ptr; it; it = it->ai_next) { - if (!connect(sock, it->ai_addr, it->ai_addrlen)) { - connected = true; - break; - } - } - - freeaddrinfo(ptr); - - if (!connected) { - closesocket(sock); - sock = INVALID_SOCKET; - throw(std::runtime_error("Failed to connect a TCPSocket")); - } -} - -void TCPSocket::Close() { - closesocket(sock); - sock = INVALID_SOCKET; -} - -int TCPSocket::Send(const void* data, int len, int flags) { - if (sock == INVALID_SOCKET) { - throw(std::runtime_error("Failed to send, TCPSocket is invalid")); - } - int ret = send(sock, (const char*)data, len, flags); - if (ret == SOCKET_ERROR) { - Close(); - throw(std::runtime_error("Failed to send, unknown error, TCPSocket automatically closed")); - } - return ret; -} - -int TCPSocket::Recv(void* data, int maxlen, int flags) { - if (sock == INVALID_SOCKET) { - throw(std::runtime_error("Failed to receive, TCPSocket is invalid")); - } - int ret = recv(sock, (char*)data, maxlen, flags); - if (ret == SOCKET_ERROR) { - Close(); - throw(std::runtime_error("Failed to receive, unknown error, TCPSocket automatically closed")); - } - return ret; -} - -/* TCPServerSocket definition -*/ - -TCPServerSocket::TCPServerSocket() { - sock = INVALID_SOCKET; -} - -TCPServerSocket::TCPServerSocket(int port) { - Open(port); -} - -TCPServerSocket::~TCPServerSocket() { - Close(); -} - -void TCPServerSocket::Open(int port) { - addrinfo *ptr = nullptr, hints; - char buf[100]; - sprintf(buf, "%d",port); //std compliant itoa() - - memset(&hints, 0, sizeof(hints)); - hints.ai_family = AF_INET; - hints.ai_socktype = SOCK_STREAM; - hints.ai_protocol = IPPROTO_TCP; - hints.ai_flags = AI_PASSIVE; - - if (getaddrinfo(nullptr, buf, &hints, &ptr)) { - throw(std::runtime_error("TCPServerSocket failed to access address info")); - } - - sock = socket(ptr->ai_family, ptr->ai_socktype, ptr->ai_protocol); - - if (sock == INVALID_SOCKET) { - freeaddrinfo(ptr); - throw(std::runtime_error("Failed to create a TCPServerSocket")); - } - - if (bind(sock, ptr->ai_addr, ptr->ai_addrlen) == SOCKET_ERROR) { - closesocket(sock); - freeaddrinfo(ptr); - throw(std::runtime_error("Failed to bind TCPServerSocket")); - } - - freeaddrinfo(ptr); -} - -void TCPServerSocket::Close() { - closesocket(sock); -} - -int TCPServerSocket::Accept(TCPSocket* s, int uSeconds) { - if (listen(sock, SOMAXCONN) == SOCKET_ERROR) { - throw(std::runtime_error("TCPServerSocket: listen() error")); - } - - //file descriptor sets are to prevent blocking - fd_set readfds; - timeval tv = {0, uSeconds}; - - FD_ZERO(&readfds); - FD_SET(sock, &readfds); - - if (select(0, &readfds, nullptr, nullptr, &tv) == SOCKET_ERROR) { - throw(std::runtime_error("TCPServerSocket: select() error")); - } - - //I don't want this to block - if (FD_ISSET(sock, &readfds)) { - if ((s->sock = accept(sock, nullptr, nullptr)) == INVALID_SOCKET) { - throw(std::runtime_error("TCPServerSocket: accept() error")); - } - return 1; - } - return 0; -} diff --git a/server/network_udp.cpp b/server/network_udp.cpp deleted file mode 100644 index 39ce01d..0000000 --- a/server/network_udp.cpp +++ /dev/null @@ -1,23 +0,0 @@ -/* Copyright: (c) Kayne Ruse 2013 - * - * This software is provided 'as-is', without any express or implied - * warranty. In no event will the authors be held liable for any damages - * arising from the use of this software. - * - * Permission is granted to anyone to use this software for any purpose, - * including commercial applications, and to alter it and redistribute it - * freely, subject to the following restrictions: - * - * 1. The origin of this software must not be misrepresented; you must not - * claim that you wrote the original software. If you use this software - * in a product, an acknowledgment in the product documentation would be - * appreciated but is not required. - * - * 2. Altered source versions must be plainly marked as such, and must not be - * misrepresented as being the original software. - * - * 3. This notice may not be removed or altered from any source - * distribution. -*/ -#include "network.hpp" - diff --git a/server/server.cpp b/server/server.cpp index 14d85bc..cf195e3 100644 --- a/server/server.cpp +++ b/server/server.cpp @@ -2,16 +2,11 @@ #include #include -#include using namespace std; void Server::Init() { - NetworkInit(); - config.Load("config.cfg"); - servSock.Open(config.Int("port")); - running = true; } @@ -22,42 +17,18 @@ void Server::Proc() { HandleOutput(); //debug -// running = false; + running = false; } } void Server::Quit() { - for (auto it : socketList) { - it->Close(); - delete it; - } - servSock.Close(); - NetworkQuit(); + // } void Server::HandleInput() { //accept new connections - TCPSocket* sock = new TCPSocket; - if (servSock.Accept(sock)) { - socketList.push_back(sock); - } - else { - delete sock; - } //accept updates from the clients - string input; - for_each(socketList.begin(), socketList.end(), [&input](TCPSocket* sock){ //why use for_each & lamdas?? to give logan a brain hemorrhage - char buffer[512]; - memset(buffer, 0, 512); - sock->Recv(buffer, 512); - input += buffer; - }); //read the updates from the clients into internal containers - if (input.size()) { - cout << "dumping input from the network" << endl; - cout << input << endl; - input.clear(); - } } void Server::UpdateWorld() { @@ -68,10 +39,5 @@ void Server::UpdateWorld() { void Server::HandleOutput() { //send all information to new connections - //... //selective updates to existing connectons - string s = "hello world"; - for (auto it : socketList) { - it->Send(s.c_str(), s.length()); - } } diff --git a/server/server.hpp b/server/server.hpp index fa709a2..ad45e55 100644 --- a/server/server.hpp +++ b/server/server.hpp @@ -2,7 +2,6 @@ #define SERVER_HPP_ #include "config_utility.hpp" -#include "network.hpp" #include @@ -21,8 +20,6 @@ public: private: bool running = false; ConfigUtility config; - TCPServerSocket servSock; - std::list socketList; }; #endif diff --git a/server/unit.cpp b/server/unit.cpp index a87a571..211536d 100644 --- a/server/unit.cpp +++ b/server/unit.cpp @@ -1,5 +1,3 @@ -#include "network.hpp" - #include using namespace std; @@ -7,16 +5,5 @@ using namespace std; //receive any amount of info and print it int main(int, char**) { - NetworkInit(); - TCPSocket sock("127.0.0.1",2000); - char buffer[512]; - - while(true) { - memset(buffer, 0, 512); - if (sock.Recv(buffer, 512)) { - cout << buffer << endl; - } - } - NetworkQuit(); return 0; } \ No newline at end of file