Вызов метода TcpListener.AcceptTcpClient из нескольких потоков - PullRequest
0 голосов
/ 07 мая 2019

В большинстве приведенных мною примеров, когда сервер одновременно работает с несколькими клиентами, в качестве примера приводится следующий код

int port = 13000;
TcpListener server = new TcpListener(IPAddress.Any, port);
server.Start();

while (true) {
    // Perform a blocking call to accept requests.
    // You could also user server.AcceptSocket() here.
    TcpClient client = server.AcceptTcpClient();
    //Do stuff
}

Чтобы увеличить пропускную способность при высоких нагрузках, по крайней мере, это то, чего я надеюсь достичь, я думал о вызове метода AcceptTcpClient в 4 или около того потоках. Тем не менее, я не уверен, что это потокобезопасно, или это даже предложенный способ его использования?

Меня беспокоит случай, когда я получаю разрыв соединения, как будто сотни клиентов подключаются к моему серверу. Более того, когда я посмотрел на метод Start в TcpClient, я также заметил аргумент backlog. Использование отставания - лучший способ? Должен ли я просто слушать один поток и оставить тяжелую обработку алгоритму отставания?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...