В соединении отказались розетки. Нормальное поведение? - PullRequest
0 голосов
/ 17 января 2012

У меня есть сервер сокетов, который принимает несколько подключений от разных клиентов. Я тестирую его на локальном хосте с клиентским приложением, которое подключается - отправляет данные и закрывает соединение 10 раз каждые 10 мс. Несколько раз тестовый клиент выдает ошибку: соединение отклонено удаленным сервером или что-то подобное. Это нормальное поведение серверного приложения?

Ответы [ 2 ]

2 голосов
/ 17 января 2012

10 подключений каждые 10 мс - это одно подключение в миллисекунду, что кажется довольно высокой скоростью.Эти попытки подключения выполняются параллельно?Если это так, возможно, вы заполняете очередь прослушивания сервера listen ();Клиенты IIRC, которые пытаются подключиться, когда очередь невыполненных заданий заполнена, получат ошибку отказа в соединении.

Чтобы проверить эту гипотезу, попробуйте передать большее или меньшее число в качестве второго аргумента для listen () на вашем сервере, и посмотрите, приводит ли это к ошибке соединения отказано более или менее часто.

0 голосов
/ 19 января 2012

Я с Джереми.Вы не упомянули протокол, но я предполагаю, что это SOCK_STREAM.Для установления связи по протоколу tcp с чем-либо, кроме самого локального соединения, потребуется более 10 мс, что в конечном итоге приведет к отставанию (и последующему соединению, отклоненному из-за ошибки), независимо от того, как высоко вы установили свой список ожидания прослушивания.

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

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