Я писал об этом виде here.
Пока вы можете проектировать свою систему, чтобы избежать накопления сокетов в TIME_WAIT
на сервере, вы должны быть в порядке с точки зрения OS на любом экране VISTA или позже. Вы можете избежать TIME_WAIT
на сервере, либо закрыв сокет на сервере с выключенным выключенным, чтобы стек TCP отправил RST
, а не FIN
ИЛИ, если клиент выдает активное закрытие и, следовательно, переходит в TIME_WAIT
, а не на сервер.
Вам нужно подумать о скорости приема, поэтому используйте асинхронные приемные вызовы и отправьте их много, также сделайте задержку прослушивания довольно большой.
Если вам нужен код для тестирования вашего сервера, у меня есть «многопроцессорный тестовый жгут», который можно скачать с here. Он использует ConnectEx()
для выдачи настраиваемого количества асинхронных подключений одновременно со скоростью, управляемой командной строкой. Я говорю о его использовании немного больше here.
Если вы думаете использовать C++, а не C#, то у меня есть некоторые примеры серверов, доступных here, а также набор свободных портов ввода-вывода для завершения ввода-вывода here.
Главное, ИМХО, чтобы убедиться, что вы testing for your desired level of scalability from Day 0.
Удачи вам!
Какое ожидаемое количество одновременных соединений? 200/сек с некоторым количеством длительностью до 15 секунд (скажем, 5% для удовольствия) означает, что через 5 минут у вас будет около 1000/одновременных. – NotMe
входящих или исходящих соединений? –