|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
03.12.2015, 14:16 | #1 |
Форумчанин
Регистрация: 14.12.2009
Сообщений: 716
|
Организация общения между сервером и клиентом
Добрый день уважаемые программисты, проектирую свой "messenger" и нуждаюсь в советах умных людей, решил пойти не самым легким путем и начал писать свой протокол по обмену сообщениями чтобы разобраться более детально
во всех тонкостях сетевого программирования. Первым делом для более высокой производительности я подумал и решил использовать асинхронные механизмы async/await и соотвественно асинхронные методы в классах TcpClient, TcpListener. На текущий момент я решил провернуть все, следующим образом: Мой сервер подписывается на событие которое считывает асинхронного приходящие пакеты от клиента а клиент аналогично реализует такой же функционал и работает это все примерно следующим образом. Код приведенный ниже, в частности ReceivePacket завернут в класс NetworkConnection и соответсвенно я создаю асинхронный обработчик для каждого подключаемого клиента до тех пор пока клиент не отключился по собственной воли. Код:
Вопрос, важно ли такое действие, как никак это лишняя операция и при больших объемах данных тоже будет кушать свое время на обработку, стоит ли делать такое или ACK стоит посылать только в том случае когда клиент должен что-то обработать при получение ACK? Вопрос, еще я каждого подключенного TCP клиента держу в ConcurrentDictionary, на сколько это правильно и есть ли другой способ более производительней? А то как бы, при 100-200к подключенных клиентов одновременно коллекция будет не хило большой что скажется естественно на производительности. Вопрос, корректно ли держать в коллекции столько клиентов? Ума не приложу как можно сделать подругому и чистить коллекцию от подключений (ведь клиент может висеть сутками онлайн или выдернуть интернет кабель и об отключение я никогда не узнаю) В общем, если кто-то уже занимался подобным, подскажите пожжааалуйста как организовать правильно такую систему.. Какие мелкие нюансы, тонкости, за ранее благодарю Вас. Последний раз редактировалось coNsept; 03.12.2015 в 14:18. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
C# Нужна реализация возможности подключения между сервером и клиентом | Wingedlion | Помощь студентам | 0 | 17.11.2013 19:06 |
(C#) Настройка связи между клиентом и сервером | Demetrius | Помощь студентам | 0 | 14.03.2012 22:46 |
Кодировка в сообщениях между клиентом-сервером. | Willer55 | Работа с сетью в Delphi | 1 | 11.12.2011 09:11 |
обмен сообщениями между сервером и клиентом | Don Karleone | Работа с сетью в Delphi | 3 | 25.02.2011 15:24 |
обмен сообщениями между клиентом и сервером используя ClientSocket и ServerSocket | xTANATOSx | Работа с сетью в Delphi | 3 | 04.10.2007 15:17 |