Advertisement
Guest User

Server

a guest
Oct 25th, 2014
183
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.56 KB | None | 0 0
  1. // C++ headers
  2. #include <iostream>
  3. #include <thread>
  4. #include <mutex>
  5. #include <list>
  6. #include <chrono>
  7.  
  8. // SDL headers
  9. #include <SDL2/SDL.h>
  10. #include <SDL2/SDL_net.h>
  11.  
  12. using namespace std;
  13.  
  14. volatile bool listenForClientConnections = true;
  15.  
  16. void initSDL();
  17. TCPsocket createServerSocket();
  18.  
  19. void listenForClients(TCPsocket socket)
  20. {
  21.     static const char *LOGIN_SUCCESS_MSG = "LoggedIn";
  22.  
  23.     cout << "Listening for clients...\n";
  24.  
  25.     char clientName[32];
  26.  
  27.     while (listenForClientConnections)
  28.     {
  29.         this_thread::sleep_for(chrono::milliseconds(500));
  30.  
  31.         TCPsocket client = SDLNet_TCP_Accept(socket);
  32.         if (client == nullptr)
  33.             continue;
  34.  
  35.         cout << "A client has connected!" << endl;
  36.     }
  37. }
  38.  
  39. int main()
  40. {
  41.     initSDL();
  42.  
  43.     TCPsocket serverSocket = createServerSocket();
  44.  
  45.     std::thread listenForClientsThread(listenForClients, serverSocket);
  46.  
  47.     getchar();
  48.     listenForClientConnections = false;
  49.     listenForClientsThread.join();
  50.  
  51.     SDLNet_TCP_Close(serverSocket);
  52. }
  53.  
  54. void initSDL()
  55. {
  56.     // initialize SDL
  57.     if( SDL_Init(SDL_INIT_EVERYTHING) != 0 )
  58.     {
  59.         cout << SDL_GetError() << "\n";
  60.         exit(-1);
  61.     }
  62.  
  63.     atexit(SDL_Quit);
  64.  
  65.     // initialize SDLNet
  66.     if( SDLNet_Init() != 0 )
  67.     {
  68.         cout << SDLNet_GetError() << "\n";
  69.         exit(-1);
  70.     }
  71.  
  72.     atexit(SDL_Quit);
  73. }
  74.  
  75. TCPsocket createServerSocket()
  76. {
  77.     IPaddress ip;
  78.     ip.host = INADDR_ANY;
  79.     ip.port = 12000;
  80.     TCPsocket serverSocket = SDLNet_TCP_Open(&ip);
  81.  
  82.     if (serverSocket == nullptr)
  83.     {
  84.         cout << "Failed to create server socket: " << SDLNet_GetError() << endl;
  85.         exit(-1);
  86.     }
  87.  
  88.     return serverSocket;
  89. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement