Esempio n. 1
0
            /// <summary>
            /// Initiates a loop for a server that wishes to accept new clients.
            /// </summary>
            /// <param name="serverCallback"></param>
            public static void ServerAwaitingClientLoop(NetworkAction serverCallback)
            {
                Console.WriteLine("Server initialized, waiting for first client.");
                TcpListener tcpListener = new TcpListener(IPAddress.Any, DEFAULT_PORT);

                try
                {
                    tcpListener.Start();

                    ServerListenerState sls = new ServerListenerState(tcpListener, serverCallback);

                    tcpListener.BeginAcceptSocket(AcceptNewClient, sls);
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.Message);
                }
            }
Esempio n. 2
0
            /// <summary>
            /// OS calls this function upon client contact with the server. Calls the server's callback function then begins the client loop again.
            /// </summary>
            /// <param name="ar"></param>
            private static void AcceptNewClient(IAsyncResult ar)
            {
                Console.WriteLine("A new player has joined the server.");

                ServerListenerState sls = (ServerListenerState)ar.AsyncState;

                TcpListener tcpListener = sls.ServerListener;

                Socket socket = tcpListener.EndAcceptSocket(ar);

                socket.NoDelay = true;

                SocketState ss = new SocketState(socket, 0);

                ss.ClientCallback = sls.ServerCallback;
                ss.theSocket      = socket;
                ss.ClientCallback(ss);

                sls.ServerListener.BeginAcceptSocket(AcceptNewClient, sls);
            }