Я хорошо знаком с тем, что Порты ввода/вывода относятся к TCP.
Но что, если я, например, кодирую FPS-игру или что-то там, где потребность в низкой задержке может быть нарушением транзакции - я хочу немедленный ответ на игрока, чтобы обеспечить лучший игровой опыт, даже ценой потери какой-либо пространственной данные в пути. Становится очевидным, что я должен использовать UDP и помимо частого обновления координат, я должен также реализовать вид полунадежного протокола (afaik TCP вызывает потерю пакетов в UDP, поэтому мы должны избегать смешивания этих двух) с обрабатывать такие события, как сообщения чата, или выстрелы, в которых потеря пакетов может иметь решающее значение.
Скажем, я нацелен на производительность, которая будет применяться к игре MMOFPS, которая позволяет встретить сотни игроков в одном, постоянном мире, и помимо борьбы с оружием, это позволяет им общаться через сообщения чата и т.д. - что-то вроде это действительно существует и работает хорошо - проверьте PlanetSide 2.
Многие статьи в сети (например, из msdn) говорят, что перекрывающиеся сокеты являются лучшими, а IOCP - концепцией богатого уровня, но они, похоже, не различают случаи, когда мы используем другие протоколы, чем TCP.
Таким образом, практически нет достоверной информации о методах ввода-вывода, используемых при разработке такого сервера, я просмотрел этот, но тема, кажется весьма спорным, и я также видел это, но с учетом обсуждения в первой ссылке, я не знаю, Я должен следовать предположениям второго, , следует ли использовать IOCP с UDP вообще, а если нет, , что является наиболее масштабируемой и эффективной концепцией ввода-вывода, когда дело доходит до UDP.
Или, может быть, я просто делаю еще одну преждевременную оптимизацию, и на данный момент не требуется никакого размышления?
Мысль о размещении на gamedev.stackexchange.com, но этот вопрос лучше подходит для сетей общего назначения, я думаю.