int SetupTcpServerAndAcceptTwoPlayer()

in CppServerAndClient/Server/Server.cpp [56:102]


int SetupTcpServerAndAcceptTwoPlayer(Server *server, int PORT)
{
    int server_fd;
    struct sockaddr_in address;
    int addrlen = sizeof(address);
       
    // Create Socket (AF_INET = IPv4, SOCK_STREAM = TCP, 0 = only supported protocol (TCP))
    if ((server_fd = socket(AF_INET, SOCK_STREAM, 0)) == 0)
    {
        std::cout << "socket creation failed";
        return -1;
    }
       
    // Setup Socket options to reuse address and port
    int options = 1;
    if (setsockopt(server_fd, SOL_SOCKET, SO_REUSEADDR | SO_REUSEPORT,
                                                  &options, sizeof(options)))
    {
        std::cout<< "Setting socket options failed";
        return -1;
    }
    
    // Configure address
    address.sin_family = AF_INET;
    address.sin_addr.s_addr = INADDR_ANY;
    address.sin_port = htons( PORT );
       
    // Bind socket to any address
    if (bind(server_fd, (struct sockaddr *)&address, 
                                 sizeof(address))<0)
    {
       std::cout << "Binding failed";
       return -1;
    }
    
    // Start listening with a max backlog of 2 connections
    if (listen(server_fd, 2) < 0)
    {
        std::cout << "listen failed";
        return -1;
    }
    
    // Accept first player
    AcceptNewPlayerConnection(server_fd, addrlen, address, server);
    // Accept second player
    AcceptNewPlayerConnection(server_fd, addrlen, address, server);
}