Ejemplo n.º 1
0
        private void Button_Connect(object sender, RoutedEventArgs e)
        {
            if (count == 0)
            {
                CHAT.Text += "\n Попытки законились";
                CHAT_SCROLL.ScrollToBottom();
            }
            else
            {
                try
                {
                    string userName = txt_nm.Text;
                    string message  = txt_msg.Text;


                    if (string.IsNullOrWhiteSpace(message))
                    {
                        MessageBoxResult mbr = MessageBox.Show("Сообщение не может быть пустым!");
                    }
                    else
                    {
                        Thread t = new Thread(() => Connect(userName, message, address, port));
                        t.Start();
                    }
                }
                catch (FormatException p)
                {
                    Console.WriteLine(p.Message + "\n" + p.StackTrace);
                    MessageBoxResult mbr = MessageBox.Show("Неправильный формат сообщения!");
                    return;

                    throw;
                }
            }
        }
 private void Add_Message(string message)
 {
     try
     {
         //Lambda, for accessing the main Threads GUI from another thread.
         this.Dispatcher.Invoke(() =>
         {
             CHAT.Text += "\n" + message;
             CHAT_SCROLL.ScrollToBottom();
         });
     }
     catch (System.Threading.Tasks.TaskCanceledException e)
     {
         Console.WriteLine("Threading Exception caught! {0}\n {1}", e.Message, e.StackTrace);
         client.Close();
         client.Dispose();
         Thread.CurrentThread.Join();
     }
 }
Ejemplo n.º 3
0
        private void Send(NetworkStream stream, string userName, string message)
        {
            message = String.Format("{0}: {1}", userName, message);

            // преобразуем сообщение в массив байтов
            byte[] data = Encoding.Unicode.GetBytes(message);
            // отправка сообщения


            try
            {
                if (stream.CanWrite)
                {
                    stream.Write(data, 0, data.Length);
                    this.Dispatcher.Invoke(() =>
                    {
                        CHAT.Text += "\n" + message;
                        CHAT_SCROLL.ScrollToBottom();
                    });
                }
            }
            catch (ArgumentOutOfRangeException e)
            {
                Console.WriteLine(e.Message + "\n" + e.StackTrace);
                MessageBoxResult mbr = MessageBox.Show("The message size is too big for the buffer.");
                return;
            }
            catch (System.IO.IOException e)
            {
                Console.WriteLine(e.Message + "\n" + e.StackTrace);
                MessageBoxResult mbr = MessageBox.Show("An error occurred when accessing the socket.");
                return;
            }
            catch (ObjectDisposedException e)
            {
                Console.WriteLine(e.Message + "\n" + e.StackTrace);
                MessageBoxResult mbr = MessageBox.Show("There was a failure reading from the network.");
                return;
            }
        }
Ejemplo n.º 4
0
        private void Receive(NetworkStream ns)
        {
            byte[] data = new byte[64];


            string message;


            try
            {
                if (ns.CanRead)
                {
                    if (client.Connected)
                    {
                        StringBuilder builder = new StringBuilder();
                        int           bytes   = 0;
                        do
                        {
                            bytes = ns.Read(data, 0, data.Length);
                            builder.Append(Encoding.Unicode.GetString(data, 0, bytes));
                        }while (ns.DataAvailable);

                        message = builder.ToString();
                        message = String.Format("Сервер: {0}", message);
                        this.Dispatcher.Invoke(() =>
                        {
                            CHAT.Text += "\n" + message;
                            CHAT_SCROLL.ScrollToBottom();

                            if (builder.ToString() == "NACK")
                            {
                                count--;
                                message    = String.Format("У вас осталось {0} попыток", count);
                                CHAT.Text += "\n" + message;
                                CHAT_SCROLL.ScrollToBottom();
                            }
                            ;
                        });
                    }
                    else
                    {
                        this.Dispatcher.Invoke(() =>
                        {
                            CHAT.Text += "\n not connected anymore";
                            CHAT_SCROLL.ScrollToBottom();
                        });
                    }
                }
                else
                {
                    //return null;
                }
            }
            catch (System.IO.IOException e)
            {
                Console.WriteLine(e.Message + "\n" + e.StackTrace);
                client.Close();
                //MessageBoxResult mbr = MessageBox.Show("TCP Client is closed.");
                //return null;
            }
            catch (ObjectDisposedException e)
            {
                Console.WriteLine(e.Message + "\n" + e.StackTrace);
                MessageBoxResult mbr = MessageBox.Show("There was a failure reading from the network.");
                client.Close();
                //return null;
            }
        }