Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Блок-схема чата по локалке

92K
18 ноября 2013 года
MinorUfa
1 / / 18.11.2013
Здравия всем! Помогите пожалуйста построить блок схему по коду:

Код:
namespace Chat1
{
    public partial class Чат : Form
    {
        private void IP_Enter(object sender, EventArgs e)
        {
            if (IP.Text == (String)IP.Tag)
            {
                IP.Text = "";
            }
           
        }

        private void IP_Leave(object sender, EventArgs e)
        {
            if (String.IsNullOrWhiteSpace(IP.Text))
            {
                IP.Text = "";
            }
        }

        public Чат()
        {
            InitializeComponent();
            new Thread(new ThreadStart(Receiver)).Start();          //Создание потока для приема сообщений
            list.Items.AddRange(File.ReadAllLines(@"C:name.txt"));
        }
 
        void SetTextSafe(string newText)
        {
            if (IP.InvokeRequired) IP.Invoke(new Action<string>((s) => IP.Text = s), newText);
            else IP.Text = newText;
        }
        protected void Receiver()                                   //Метод потока
        {
            TcpListener Listen = new TcpListener(7000);             //Создание Listener на порт "по умолчанию"
            Listen.Start();                                         //Начинается прослушка
            Socket ReceiveSocket;                                   //заводится сокет
            while (true)
            {
                try
                {
                    ReceiveSocket = Listen.AcceptSocket();                  //Сообщение пришло
                    Byte[] Receive = new Byte[256];
                    using (MemoryStream MessageR = new MemoryStream())      //Чтение сообщения через поток?
                    {
                        Int32 ReceivedBytes;                                //Количество считанных байт
                        do
                        {
                            ReceivedBytes = ReceiveSocket.Receive(Receive, Receive.Length, 0);      //Чтение
                            MessageR.Write(Receive, 0, ReceivedBytes);                              //записание в потом (после чтения)
                        }
                        while (ReceiveSocket.Available > 0);                                        //Читаем до тех пор, пока в очереди не останется данных
                        ChatBox.BeginInvoke(AcceptDelegate, new object[] { "Он: " + Encoding.Default.GetString(MessageR.ToArray()), ChatBox });          //Добавление данных в ChatBox
                    }
                }
                catch (System.Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }

            }
        }
        //Отправляет сообщение в потоке на IP, заданный в контроле IP
        void ThreadSend(object Message)
        {
            try
            {
                String MessageText = "";            //Проверяет входной объект на соответствие строки
                if (Message is String)
                    MessageText = Message as String;
                else
                    throw new Exception("Поле не должно остаться пустым...");
                IPEndPoint EndPoint = new IPEndPoint(IPAddress.Parse(IP.Text), 7000);                     //Создание сокета (присоединение)
                Socket Connector = new Socket(EndPoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
                Connector.Connect(EndPoint);
                Byte[] SendBytes = Encoding.Default.GetBytes(MessageText);      //Отправляется сообщение
                Connector.Send(SendBytes);
                Connector.Close();
                ChatBox.BeginInvoke(AcceptDelegate, new object[] { "Я: " + MessageText, ChatBox });         //Изменение поля сообщений (уведомление, что отправлено)
               
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        delegate void SendMsg(String Text, RichTextBox Rtb);            //Делегат доступа к контролам формы

        SendMsg AcceptDelegate = (String Text, RichTextBox Rtb) =>      //переменная данного класса (класса делегата)
        {
            Rtb.Text += Text + "n";
        };

        private void Send_Click_1(object sender, EventArgs e)               //Обработчик кнопки
        {
            new Thread(new ParameterizedThreadStart(ThreadSend)).Start(Message.Text);
        }

        private void button3_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }
 
        }
    }
}
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог