Esempio n. 1
0
        public Task ReciveMessageAsync()
        {
            return(Task.Run(() =>
            {
                try
                {
                    while (true)
                    {
                        byte[] buf = new byte[1024];
                        using (var stream = new MemoryStream())
                        {
                            do
                            {
                                int byteRec = client.Receive(buf);
                                stream.Write(buf, 0, byteRec);
                            } while (client.Available > 0);
                            if (stream.Length != 0)
                            {
                                stream.Position = 0;

                                BinaryFormatter formatter = new BinaryFormatter();
                                Message tmp = (Message)formatter.Deserialize(stream);
                                stream.Position = 0;
                                if (tmp.Type == MessageType.UserData)
                                {
                                    info = tmp.username;
                                    Console.WriteLine(tmp.username.username);
                                    GetOtherUsers();
                                }
                                if (tmp.Type == MessageType.Private)
                                {
                                    server.SendPrivateMessage(stream.ToArray(), tmp.receiver);
                                }
                                else
                                {
                                    server.BroadcastMessage(stream.ToArray(), info.id);
                                }
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                    client.Shutdown(SocketShutdown.Both);
                    client.Close();
                }
                finally
                {
                    server.RemoveClient(info.id);
                }
            }));
        }
Esempio n. 2
0
        public void Process()
        {
            try
            {
                Stream = client.GetStream();
                string message = GetMessage();
                Name = message;

                message = Name + " подключился";
                server.BroadcastMessage(message, this.Id);
                Console.WriteLine(message);
                while (true)
                {
                    try
                    {
                        message = GetMessage();
                        message = String.Format(Name + ": " + message);
                        Console.WriteLine(message);
                        server.BroadcastMessage(message, this.Id);
                    }
                    catch
                    {
                        message = String.Format(Name + ": покинул чат");
                        Console.WriteLine(message);
                        server.BroadcastMessage(message, this.Id);
                        break;
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
            finally
            {
                server.RemoveConnection(this.Id);
                Close();
            }
        }