Я могу отправлять данные по протоколу udp с помощью метода UdpClient.Send (байтовый массив) или UdpClient.Client.Send (stream). оба метода работают. единственные различия состоят в том, что в одном методе я передаю байтовый массив, а в другом - поток.
быстрый пример:
UdpClient udpClient = new UdpClient(localEndPoint);
// I can eather send data as:
udpClient.Send(new byte[] { 0, 1, 2 }, 3);
udpClient.Client.Send(new byte[5]);
Кроме того, какой метод будет гарантировать, что мои данные достигнут пункта назначения без потери информации? Я читал, что протокол udp не гарантирует, что все байты достигают своего места назначения, поэтому лучше для потоковой передачи видео, аудио, но не для передачи файлов, как я делаю. Причина, по которой я использую udp вместо tcp, заключается в том, что очень сложно установить соединение tcp между двумя пользователями, которые находятся за маршрутизатором. Я знаю, что это будет возможно, если один из пользователей включит переадресацию портов на своем маршрутизаторе. Мне удалось отправить данные, выполнив то, что называется udp punch holing. UDP Punch Holing позволяет установить соединение между двумя пользователями, которые находятся за маршрутизатором с помощью сервера. Будет долго объяснять, как это работает здесь, вы можете найти много информации, если вы Google. В любом случае, я просто хотел сообщить вам, почему я использовал udp вместо tcp. Не знаю, можно ли будет отправить файл с этим протоколом, чтобы убедиться, что данные не потеряны. возможно я должен создать алгоритм. или, возможно, метод UdpClient.Client.Send гарантирует получение данных, а метод UdpClient.Send не гарантирует получение данных.