Как реализовать асинхронный сервер TCP C#? Начал писать игровой сервер, все бы хорошо но возникла проблема, из-за того что нагрузка планируется более 10к человек а некоторые данные не успевают обрабатываться на стороне клиента то возникают рывки либо вообще отказ обновлять данные на клиентах, логика моего сервера:
1. Подключение к серверу и рассылка всем клиентам о подключении.
2. Синхронизация позиций (отправляется каждый раз, когда игрок двигается)
3. Прием сообщений на стороне клиента и интерполяция старой позиции до новой.
Использую для отправки и приема BinaryWriter и BinaryReader.
Ссылка на сервер: https://yadi.sk/d/ta5pmIFWe_nbwg
Прошу вас помочь решить данную проблему либо подсказать в какую сторону копать.

21 Авг 2019 в 06:35
194 +1
0
Ответы
1

Для реализации асинхронного сервера TCP в C# можно использовать классы TcpListener и TcpClient из пространства имен System.Net.Sockets. Вам необходимо создать отдельный поток для обработки каждого подключения клиента, чтобы не блокировать основной поток сервера.

В вашем случае, чтобы избежать рывков и задержек при передаче данных между сервером и клиентами, рекомендуется использовать асинхронные операции для приема и отправки данных. Это позволит улучшить производительность сервера и обеспечить более плавное обновление данных на клиентских устройствах.

Для управления асинхронными операциями можно использовать классы NetworkStream, StreamReader и StreamWriter. Пример асинхронного сервера TCP в C# можно найти в документации Microsoft или на специализированных форумах и ресурсах для разработчиков.

Также рекомендуется оптимизировать вашу логику сервера, чтобы снизить нагрузку на процессор и уменьшить время обработки данных. Может быть полезно проанализировать и оптимизировать алгоритмы и структуры данных, которые используются в вашем сервере.

Если у вас возникают проблемы с вашим текущим кодом сервера, рекомендуется осуществить отладку и профилирование приложения, чтобы выявить узкие места и улучшить производительность. Также стоит обратить внимание на использование многопоточности и синхронизации данных при работе с асинхронными операциями в C#.

Надеюсь, эти советы помогут вам справиться с проблемой и улучшить производительность вашего игрового сервера. Удачи!

20 Апр в 13:16
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 83 852 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир