0

Короче, пишу сервер на C# в целях попрактиковаться.

Нужно сделать чтоб сервер вытаскивал из TcpListener входящие подключения. Допустим есть для этого асинхронная функция, она по сути возвращает Task в состоянии ожидания подключения. Так вот, как правильно эту функцию зациклить?

И также, допустим я сделаю асинхронные функции для обработки подключений, там буду ждать пока в NetworkStream клиента не появятся данные, а потом их оттуда вытаскивать.

Получается, таски для принятия подключений и для обработки входящих запросов нужно создавать пока сервер работает.

Или вот, допустим, я хочу чтоб сервер каждому клиенту раз в n-ое время отправлял какую-нибудь служебную информацию, то-есть опять-же нужно создавать таски с определённым интервалом.

Так вот, как правильно создавать повторяющиеся таски?

И вообще правильно ли делать сетевое взаимодействие оным образом? Я ещё ничего особо не писал, просто оцениваю пути решения задачи.

  • Таймер чем то не подходит? – tym32167 May 05 '22 at 19:05
  • В первом, и во втором случае - нет. – qualitye May 05 '22 at 19:12
  • Чем именно не подходит? – tym32167 May 05 '22 at 19:14
  • Новый таск для принятия и обработки подключения, должен создаваться, когда предыдущий разрешится, тоже самое с запросами. – qualitye May 05 '22 at 19:19
  • звучит как цикл. Цикл пробовали? Вот еще есть пример в доке https://docs.microsoft.com/en-us/dotnet/api/system.net.sockets.tcplistener?view=net-6.0 – tym32167 May 05 '22 at 19:19
  • Ну так конечно можно, но тогда, если я правильно понимаю, у меня один поток будет занят тем, что в цикле ждёт старый и после создаёт новый таск. Правильно ли так делать? – qualitye May 05 '22 at 19:26
  • Правильно или нет - зависит от задачи. Я вашу задачу не понимаю, ес честно. – tym32167 May 05 '22 at 19:30
  • Прилинковал решения, отвечающие на ваш вопрос. Также внимательно поизучайте шаблон проектирования Producer/Consumer, не важно где найдете его описание, можно даже сразу в нескольких источниках почитать. – aepot May 05 '22 at 19:39
  • 1
    @aepot за паттерном далеко ходить и не надо https://ru.stackoverflow.com/q/428327/179763 – tym32167 May 05 '22 at 19:51

0 Answers0