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

Ваш аккаунт

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

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

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

Сервер тестирований на .Net

18K
16 октября 2006 года
QuaNtuM
3 / / 10.06.2006
Я пишу курсовую работу. Мы ее ришем вдвоем, с моим напарником; он пишет клиент, я пишу сервер. Так вот у меня возникли проблемы с обеспечением парллельности работы. Т.е. сервер все время прослушивает какой-то порт на подключения, причем в отдельном потоке. Когда AcceptClient получен,
 
Код:
TcpClient client = listener.AcceptTcpClient();
clients.Add(new TestClient(client));

я его пытаюсь засунуть в ArrayList с объектами, которые представляют собой экземпляры классов работы с потоками и при этом еще и хранят этого самого клиента. Вот исходник этого класса:
Код:
class TestClient
    {
        private TcpClient client;
        private Thread testClientThread;

        public bool Connected
        {
            get
            {
                if (client.Client == null)
                {
                    return false;
                }
                else
                {
                    return client.Connected;
                }
            }
        }

        public TestClient(TcpClient client)
        {
            this.client = client;
            testClientThread = new Thread(new ThreadStart(Work));
            testClientThread.Priority = ThreadPriority.BelowNormal;
            testClientThread.Start();
        }

        private void Work()
        {
            do
            {
                //Здесь будет некоторая работа с клиентом
                if (!Connected)
                    MessageBox.Show("Клиент отключился!", "Info", MessageBoxButtons.OK, MessageBoxIcon.Information);

            }
            while (this.Connected);
            MessageBox.Show("Завершение работы с клиентом", "Info", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }

        public void Stop()
        {
            client.Close();
        }


Подскажите, где моя ошибка. Когда я обращаюсь к clients.Connected после установки соединения значение свойства всегда true, даже если клиент уже отключился. Причем этот только один замеченный глюк.
273
21 октября 2006 года
3A3-968M
1.2K / / 22.12.2005
Свойство Connected выводится исходя из последней операции обмена с сервером. В твоём коде последняя операция (т.е. подключение клиента к серверу) проходит успешно, поэтому до следующего обмена Connected остаётся со значением true, т.к. после соединения ты больше не пересылаешь данные.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог