Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
MINO
12 / 12 / 5
Регистрация: 03.06.2016
Сообщений: 124
Завершенные тесты: 1
1

Многоклиентность TcpListener

15.12.2017, 13:27. Просмотров 121. Ответов 0
Метки нет (Все метки)

Здравствуйте.
Есть пара вопросов по обработке клиента на сервере.
Есть допустим поток который контролирует подключение клиента методом
C#
1
2
3
4
5
6
7
8
9
10
11
12
Server_Event SE = (Server_Event)__ThreadObject;
            while (Active)
            {
                Thread.Sleep(50);
                if (SE.Complited && SE.Active)
                {
                    SE.Complited = false;
                    TcpListener Listener = SE.Listener;
                    Listener.BeginAcceptSocket(
                        new AsyncCallback(AsyncListenerPort), SE);
                }
            }

и сам метод который ждет подключение.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
private void AsyncListenerPort(IAsyncResult __AR)
        {
            Server_Event serverEvent = (Server_Event)__AR.AsyncState;
            serverEvent.Complited = true;//<-- тут мы освобождаем событие и разрешаем подключение следущего клиента  (1)
            TcpClient client = serverEvent.Listener.EndAcceptTcpClient(__AR);
            NetworkStream networkStream = client.GetStream();
            реализовать команды 
            switch (serverEvent.Type)
            {
                case Server_Event_Type.GET_SETTINGS_CLIENT:
                    SendCliendSettings(networkStream);
                    break;
            }
            serverEvent.Complited = true;//или освобождать тут  (2)
        }
и собственно интересует два момента.
когда можно ждать следующего клиента serverEvent.Complited = true, в варианте (1) вроде как работает но вопрос так и стоит.
И второй вопрос, нужно ли проверять доставку данных (networkStream.Write networkStream.Read), например отправляя принемая хеши этих данных, или майкрософт позаботились об этом?

Добавлено через 21 час 44 минуты
Вопросы все еще актуальны

Добавлено через 19 часов 0 минут
Первый вопрос решился. второй все еще актуален.
Оказывается майкрософт позаботились о взамидойствие клиента с сервером.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
        private void ListenerPort(IAsyncResult AR)
        {
            TcpListener listener = (TcpListener)AR.AsyncState;
            TcpClient client = listener.EndAcceptTcpClient(AR);
            ClientList.Add(client);
            listener.BeginAcceptTcpClient(new AsyncCallback(ListenerPort), listener);
 
        }
//и собственно ждем клиента
            TcpClient client = ClientList[Convert.ToInt32(cc.Text)];
            NetworkStream NS = client.GetStream();
            byte[] send = new byte[4];
            IAsyncResult ar= NS.BeginRead(send,0,4, new AsyncCallback(beginserver), NS);
однако как работает NS.BeginRead пока не понятно, понятно что асинхронно, но как, потоков других он не создает, если есть идеи по поводу этого то была бы сказка.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.12.2017, 13:27
Ответы с готовыми решениями:

TcpListener
можно примерчик сервера с использованием TcpListener? я не очень понимаю, вот...

Класс TcpListener
Добрый день. Использую в программе класс TcpListener. Подключенный клиент...

TcpClient и TcpListener
Помогите разобраться. Текст сервера: //Создаем TcpListener ...

TcpListener Active
Нет свойства Active Стоит vs 2015 .Net Framework менял в свойствах проекта на...

Как проверить не закрыт ли TcpListener
Здравствуйте. Моя задача заключается в рассылки сообщений на несколько...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.12.2017, 13:27

TcpListener listener выход из программы
Здравствуйте! Выдрал с одной книжки пример слушатель порта и засунул его в...

TcpListener, реализованный для консольного приложения, не работает в WF
Почему пример работы с TcpListener работает только на консольном приложении, а...

Клиент-сервер, TcpListener, подключается но данные не передает
Здравствуйте! Помогите, пожалуйста, кто понимает. Клиент подключается к...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru