コード例 #1
0
ファイル: Program.cs プロジェクト: Bloblblobl/ChatR
        static void Main(string[] args)
        {
            Console.WriteLine("Server Started...");

            MessageHandler msgHandler = new MessageHandler();
            var port = Shared.port;

            // Create single TcpListener
            var listener = new TcpListener (IPAddress.Any, port);
            listener.Start();
            new Thread(PingClients).Start(msgHandler);

            while (true)
            {
                // Wait for client connection (accept socket)
                var socket = listener.AcceptSocket();
                socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReceiveTimeout, SOCKET_TIMEOUT);
                socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.SendTimeout, SOCKET_TIMEOUT);

                // Create stream
                var stream = new NetworkStream(socket);

                 // Create reader
                var streamr = new StreamReader(stream);

                // Create writer
                var streamw = new StreamWriter(stream);
                streamw.AutoFlush = true;

                // Add new client to MessageHandler
                msgHandler.AddClient(streamw, socket);

                // Create a thread that handles reading from the client (pass the reader)
                var thread = new Thread (HandleClient);
                thread.Start(Tuple.Create<StreamReader, MessageHandler, Socket>(streamr, msgHandler, socket));
            }
        }