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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.10.2012, 16:56   #1
Imposters
Пользователь
 
Регистрация: 01.10.2012
Сообщений: 21
По умолчанию Клиент серверное приложение

Пишу клиент-серверное приложение
код сервера
Код:
try
            {
                byte[] data = new byte[Received.Length * 8192]; //массив байт для передачи сообщения
                server.Start();
                int sec = Convert.ToInt32(DateTime.Now.Second.ToString());
                int sec1 = Convert.ToInt32(DateTime.Now.Second.ToString());

                while ((sec1 - sec) < 2)
                {
                    if (!server.Pending())
                    {
                        //scanner = false;
                    }
                    else
                    {
                        TcpClient client = new TcpClient();
                        client = server.AcceptTcpClient();
                        //получение информации от клиента
                        NetworkStream stream = client.GetStream();
                        int i;
                        //_________________________________ПОЛУЧЕНИЕ И ОТПРАВКА ДАННЫХ______________
                        //принимаем данные от клиента пока не дойдем до конца.
                        data = new Byte[8192]; // масив для хранения принятых данных
                        String responseData = String.Empty;
                        Int32 bytes = stream.Read(data, 0, data.Length); // получение данных в bytes
                        responseData = System.Text.Encoding.Unicode.GetString(data, 0, bytes); // перевод в строку
                        // разбиение строки на массив строк

                        String[] Received_line = responseData.Split(new char[] { '_' }, StringSplitOptions.RemoveEmptyEntries);
                        for (int j = 0; j < Received_line.Length; j++)
                        {
                            Received[j] = Convert.ToString(Received_line[j]);
                        }
                        DataRow New_Applications = database1DataSet.Aapplication_File.NewRow();
                        //описываем созданую строку по параметрам которые созданы в таблице
                        New_Applications["Заказщик"] = Received[1];
                        New_Applications["Дата"] = Received[0];
                        New_Applications["Предприятие"] = Received[2];
                        New_Applications["СутьЗаявки"] = Received[3];
                        New_Applications["Пример"] = Received[4];
                        //записать строку
                        database1DataSet.Aapplication_File.Rows.Add(New_Applications);
                        aapplication_FileTableAdapter.Update(database1DataSet.Aapplication_File);
                        label6.Text = "Заявка добавленна!";
                    }
                    sec1 = Convert.ToInt32(DateTime.Now.Second.ToString());
                }
                server.Stop();
                //получили данные в масиве, разделяем его по переменных
                label1.Text = "";
                
            }
            catch
            {
                ;
            }
        }
Проблема в том, что при таком решении приложение наглухо зависает, если параллельно ему открыть еще что то, если же убрать строчку
Код:
while ((sec1 - sec) < 2)
тогда приложение будет всегда находиться в "подвисшем" состоянии, пока не начнет получать данные, подскажите как избавиться от этих зависаний
Imposters вне форума Ответить с цитированием
Старый 22.10.2012, 03:42   #2
Mixim
Форумчанин
 
Регистрация: 29.10.2009
Сообщений: 259
Сообщение

Особо в код не вчитывался, но если правильно понял слова:
Цитата:
Сообщение от Imposters Посмотреть сообщение
Код:
while ((sec1 - sec) < 2)
тогда приложение будет всегда находиться в "подвисшем" состоянии, пока не начнет получать данные, подскажите как избавиться от этих зависаний
, то можно этот код засунуть в другой поток (как это сделать самым простым образом смотри ТУТ) и проблема: "приложение будет всегда находиться в "подвисшем" состоянии" будет решена.
Из всех классических книг, посвященных программированию, ненавижу всего одну - русский перевод книги Роберта Седжвика-"Фундаментальные алгоритмы C++". Предпочитаю читать её в оригинале.
Mixim вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Клиент-Серверное приложение...? spamer Общие вопросы по программированию, компьютерный форум 2 15.03.2012 12:42
Клиент-серверное приложение Granus C/C++ Сетевое программирование 2 20.07.2011 02:07
Клиент-серверное приложение Куралай_ Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 14.05.2010 10:00
Возможно-ли Клиент-серверное приложение типа Клиент(Pascal) а сервер(CGI)? Demol Работа с сетью в Delphi 1 21.04.2009 16:18
Клиент-серверное приложение veryseldom Работа с сетью в Delphi 8 20.08.2007 19:57