Отправка данных на клиентском сокете без запроса клиента C #

1

Я хочу спроектировать Socket Server с несколькими клиентами Socket, в которых, как только клиент будет подключен к серверу, сервер должен начать отправлять данные клиенту, а клиент должен получить данные, а когда клиент будет отключен, сервер должен прекратить отправлять данные этому клиенту. Может ли кто-нибудь предложить метод для выполнения вышеуказанной задачи в С#.

Теги:
sockets

1 ответ

1
Лучший ответ

Честно говоря, это похоже на довольно стандартную работу сокета. Сокеты TCP - это просто пара потоков (по одному в каждом направлении). Любой конец может отправить данные другому в любое время. Сырые сокеты не являются запросом/ответом, хотя, очевидно, запрос/ответ можно записать поверх сокета. Но так могут быть специальные сообщения в любом направлении.

Итак, в основном: просто используйте сокет, и когда сервер хочет что-то отправить: отправьте его. Это все есть. Сломанные сокеты обнаруживаются, если вы пишете в сокет, поэтому сервер узнает об отключении либо через обычный механизм с закрытым сокетом, либо при получении сообщения об ошибке при отправке.

  • 0
    Реализуйте рукопожатие с помощью периодических сообщений "Are you there" -> "I am still here" отправляющих сообщения в любом / обоих направлениях, чтобы быстрее обнаружить разъединение (что не обязательно будет разъединением сокета).
  • 0
    спасибо за ответ, я последовал вашему предложению использовать метод Send в цикле для непрерывной отправки данных в подключенный сокет, но здесь я сталкиваюсь с проблемой задержки, потому что сообщения отправляются через сокет каждые 70 миллисекунд, и задержка продолжает увеличиваться после того, как каждое сообщение отправлено. Пожалуйста, предложите способ оптимизации или любой другой метод для достижения цели.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню