Я пишу код для простой библиотеки C#, отвечающей за управление связью UDP в архитектуре клиент / сервер.
Я основал свое общение на классе C# System.Net.Sockets.UdpClient
, как для серверной, так и для на стороне клиента; для функции отправки на стороне клиента я видел два возможных варианта:
- выполнить один вызов
Connect(IPEndPoint endPoint)
, чтобы указать конечную точку назначения, затем выполнить последующие вызовы Send(byte[] dgram, int bytes)
, следовательно без указания целевой конечной точки - всегда выполняйте вызовы на
Send(byte[] dgram, int bytes, IPEndPoint endPoint)
, следовательно, указав конечную конечную точку
относительно первого варианта, если требуется другая конечная точка, просто выполните новый вызов Connect
.
Я смотрел на MSDN, но все же пара вопросов осталась без ответа:
- Есть ли какие-либо преимущества при выборе между одним вариантом и другим? ? технически первый кажется мне более чистым и понятным, но второй дает вам это преимущество "Если вы вызываете метод Connect, любые дейтаграммы, которые приходят с адреса, отличного от указанного по умолчанию, будут отброшены «
- в частности, есть ли какие-либо причины для выбора среди них? опять же, кажется, первый для меня более оптимизирован.
- зачем предоставлять два разных способа достижения практически одинаковых функциональных возможностей (если не совсем одинаковых)?