Есть ли способ отправить файл (изображение или видео) с помощью Netcat и UDP. По умолчанию это TCP, но я хотел бы отправлять по UDP. Я пробовал просто добавить -u к команде nc, но это не сработало. Вот две команды, которые я использую:
cat File.jpg | nc -u -l 777
nc -u 192.168.x.x 777 | pv -b > newfile.jpg
Я использовал свой IP-адрес для x.x и соответствующий файл на моем ПК. Я тоже использую Ubuntu.
Спасибо за любую помощь!
Попробуйте так:
nc -u -l 7777 > newfile.jpg #on the destination machine
cat file.jpg | nc -u 192.168.x.x 7777 #on the source machine
Обычно вы хотите, чтобы машина получила файл для «прослушивания» (сначала запустите его), а когда она прослушивает, отправляет данные по udp. UDP не имеет последовательности «рукопожатия», и пакеты отправляются немедленно, даже если никто не слушает *.
* иногда вы получаете ICMP-пакет, что порт закрыт (недоступен), но вы не можете зависеть от этого (брандмауэры и т. д.)
Думаю, на этот вопрос нужно ответить так: да, есть способ отправка файл с Netcat через UDP. Однако надежно получить этот файл на целевом хосте.
Если вы хотите, чтобы на целевом хосте был полезный файл, поищите другое решение.
Использование опции TCP делает не гарантия, что ваш файл будет получен в целости и сохранности.
TCP обеспечивает только 16-битную защиту от ошибок. Это означает, что 1 из 65 536 ошибок передачи будет устранена.
Чтобы безопасно передавать файлы между системами, вы должны вычислить хэш всего файла перед отправкой и проверить его после приема.
Если вы это делаете, отправка через UDP полностью допустима. Однако вы хотите иметь очень низкую вероятность ошибок передачи. Не пытайтесь сделать это через загруженную сеть WiFI или на компьютер на другом конце континента. Но внутри здания через проводную сеть вы столкнетесь с очень небольшим количеством ошибок.