Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.12.2011, 20:49   #1
ardor
Пользователь
 
Регистрация: 16.11.2009
Сообщений: 51
По умолчанию TCP и потоки

Пишу программу, для создания сервера и подключения к нему. Пока передаю только текст.

Код:
private void panel1_Click(object sender, EventArgs e)
        {
            panel1.BackgroundImage = TCP_client_server.Properties.Resources.server_on;

            if (serv == 0)
            {
                serv = 1;   //переменная, показывающая, включен сервер или нет.
                lst2 = new Thread(server);  // Объявление глобальной переменной в начале. 
                lst2.Start();
                //lst2.Join();  
            }
            else
            {
                //MessageBox.Show(serv.ToString());
                serv = 0;
                //MessageBox.Show(serv.ToString());
            }    
        }
Код:
public void server()
        {
            listener = new TcpListener(IPAddress.Any, 2453);
            listener.Start();
            MessageBox.Show(serv.ToString());
            gr = new txt1(label4_d);
            string sooo = "            SERVER IP: " + IPAddress.Loopback.ToString();
            label4.Invoke(gr, sooo);
            
                while (serv == 1)    //при нажатии на panel1 - serv присваивается 0, но цикл не останавливается.
                {
                    Byte[] bytes = new Byte[256];
                    String data = null;
                    TcpClient cliento = listener.AcceptTcpClient();
                    NetworkStream io = cliento.GetStream();
                    int i;
                    System.Text.UTF8Encoding f = new UTF8Encoding();
                    while ((i = io.Read(bytes, 0, bytes.Length)) != 0)
                    {
                        data = f.GetString(bytes, 0, i);
                        string s;
                        if (data == "Disconnect")
                            s = "Клиент " + cliento.Client.RemoteEndPoint + " отключился\n";
                        if (data == "Connect")
                            s = "Присоединился клиент " + cliento.Client.RemoteEndPoint + "\n";
                        else
                            s = cliento.Client.RemoteEndPoint + ": " + data + "\n";
                        gr = new txt1(richtextbox1_d);
                        textBox1.Invoke(gr, s);
                       
                        if (serv == 0)
                            MessageBox.Show("Serv == 0");      // еще одна проверка, которая никогда не выполняется.

                    }

                    cliento.Close();
                }

                listener.Stop();
                MessageBox.Show(serv.ToString());       // вообще не выполняется.

            //listener.Stop();                           //Все эти 4 строки не приносят никакого результата. Поток все-равно не завершается.
            //Thread.CurrentThread.Abort();
            //lst2.Abort();
            //lst2.Interrupt();    

        }
Скажите, где я ошибся) Программа корректно не завершается, и в диспетчере висит процесс. Убивается только вручную.
ardor вне форума Ответить с цитированием
Старый 18.12.2011, 20:51   #2
ardor
Пользователь
 
Регистрация: 16.11.2009
Сообщений: 51
По умолчанию

И заодно еще вопрос. Когда подключается несколько клиентов, обменивается сообщениями только один из них. Остальные ожидают. Как сделать типо чата. Чтобы одновременно все подключенные могли обмениваться сообщениями?
ardor вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как создать TCP клиент, TCP сервер ? DreamMaster911 C/C++ Сетевое программирование 1 26.10.2010 15:05
tcp Cpluser Общие вопросы .NET 1 19.02.2010 20:43
TCP/IP Syltan Свободное общение 14 11.10.2009 19:18
"2540:TCP"= 2540:TCP:oeiuq AlexSh Безопасность, Шифрование 0 06.07.2009 10:28
TCP/IP TaTT DoGG Общие вопросы .NET 12 18.04.2009 23:02