.Net, TCP против UDP, асинхронная передача нескольких сообщений / клиентов

#.net #networking #tcp #udp #socketasynceventargs

#.net #сеть #tcp #udp #socketasynceventargs

Вопрос:

Я работаю с.Net Я хочу создать службу и искать между TCP или UDP. Предполагается, что сервис поддерживает несколько клиентов, поэтому я делаю его асинхронным с помощью .Net SocketAsyncEventArgs, поскольку я видел, что он обладает лучшей производительностью и меньшим потреблением памяти. Я знаю, что TCP медленнее, чем UPD, но я хотел бы узнать ваше мнение о том, что будет работать быстрее между этими двумя сценариями

1) Используя TCP и SocketAsyncEventArgs, каждый клиент будет подключаться, и как только служба примет соединение, в основном у каждого клиента есть конечная точка для начала отправки и получения, поэтому при открытом (принятом) соединении может быть отправлено несколько сообщений. По сути, каждый клиент имеет собственное соединение и может иметь двустороннюю связь

2) Каждый клиент будет отправлять дейтаграмму UDP на одну и ту же конечную точку UDP-сервера, поэтому в основном у меня есть одна конечная точка для всех клиентов, чтобы отправлять все сообщения, затем обрабатывать их и отправлять дейтаграмму обратно каждому в отдельности.

Возможно, у меня есть неправильное представление о TCP / UPD, но в основном вопрос заключается в том, что, когда у меня есть открытое TCP-соединение для каждого клиента, медленнее ли отправлять сообщения UDP туда и обратно, когда все клиенты используют одну и ту же начальную конечную точку UDP.

Комментарии:

1. Невозможно ответить на этот вопрос, не понимая, что будет делать ваше приложение. Если вы отправляете что-то, что может допускать потерянные пакеты (например, потоковое видео), UDP потенциально подходит. Если вы отправляете что-то, что не может переносить потерянные пакеты, UDP не является подходящим выбором.

Ответ №1:

Вашим первым соображением не должна быть производительность. TCP — надежный протокол, UDP — нет. Если вы реализуете UDP, вам потребуется реализовать дополнительную логику, чтобы гарантировать, что сообщения достигли места назначения.

UDP имеет смысл в нескольких ограниченных сценариях: (1) когда вы хотите передавать сообщения (TCP не поддерживает широковещательную передачу) или (2) когда вам на самом деле все равно, доходят ли 100% сообщений до места назначения.

Комментарии:

1. Я знаю об этих правилах, в основном мой вопрос заключается в том, что соединение, установленное по протоколу TCP, отправляет и получает несколько клиентов одновременно, насколько медленнее оно работает по сравнению с UPD, которое должно получать пакеты от всех клиентов под одним и тем же портом.