rendered paste body#include "server.h"#include <iostream>#include <SDL/SDL.h>using namespace std;Server::Server() { running = true; SDL_Init(0); SDLNet_Init(); SDLNet_ResolveHost(&ip, NULL, 9999) sserver = SDLNet_TCP_Open(&ip); sset = SDLNet_AllocSocketSet(MAX_CLIENTS); for (int i=0; i<MAX_CLIENTS; i++) { sclients[i] = NULL; }}Server::~Server() { SDLNet_FreeSocketSet(sset); sset = NULL; SDL_Quit(); SDLNet_Quit();}void Server::Start() { while (running) { // Check for client connections while ((new_client = SDLNet_TCP_Accept(server)) != NULL) { for (int i=0; i<MAX_CLIENTS; i++) { if (sclients[i] == NULL) { sclients[i] = new_client; SDLNet_AddSocket(sset, sclients[i]); break; } } } // Check for activity if (SDLNet_CheckSockets(sset, 0) > 0) { for (int i=0; i<MAX_CLIENTS; i++) { if (sclient[i] != NULL && SDLNet_SocketReady(sclient[i])) { Handle(i); } } } }}void Server::Handle(int id) { string packetdata; TCPsock client = sclient[i] if (SDLNet_TCP_Recv(client, packetdata, MAX_PACKETLEN) <= 0) { // Client disconnected sclient[i] = NULL; SDLNet_TCP_DelSocket(sset, sclient[i]); } else { // Handle data }}void Server::Send(int id, string data) { if (SDLNet_TCP_Send(sclient[i], data, data.size()) < data.size()) { // Client disconnected sclient[i] = NULL; SDLNet_TCP_DelSocket(sset, sclient[i]); }}