Пример #1
0
        static void Main(string[] args)
        {
            BetterConsole.WriteLog("Starting SpChat server...");
            var server = Server.GetServer();

            server.Start(Port);
        }
Пример #2
0
        public Client(TcpClient clientSocket)
        {
            _clientSocket = clientSocket;

            var sslStream = new SslStream(clientSocket.GetStream(), false);

            sslStream.AuthenticateAsServer(Server.GetServer().Certificate, false, SslProtocols.Tls, true);
            Stream = new BinaryStream(sslStream);

            BetterConsole.WriteLog("Connection secured.");

            StartClientThread();
        }
Пример #3
0
        private void ClientThread()
        {
            while (_clientSocket.Connected)
            {
                var message = string.Empty;

                try
                {
                    message = Stream.Reader.ReadString();
                }
                catch (Exception)
                {
                    break;
                }

                if (message.StartsWith("/"))
                {
                    ProcessCommand(message);
                    continue;
                }

                if (!Authenticated)
                {
                    DisplayString("You are not authenticated to use the chat. Please login first using '/login [username] [password]'");
                    continue;
                }

                var chatMessage = new ChatMessage
                {
                    FromUser = User.Username,
                    ToUser   = "******",
                    Message  = message,
                    Time     = DateTime.Now
                };

                Server.GetServer().BroadcastChatMessage(chatMessage);
                Database.GetDatabase().ChatMessages.Add(chatMessage);
            }

            Server.GetServer().RemoveClient(this);
            if (Authenticated)
            {
                Server.GetServer().BroadcastMessage($"{User.Username} has left the chat.");
            }
        }