Netcat UDP 文件传输?

Netcat UDP 文件传输?

有没有办法使用 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 地址作为 xx,以及我电脑上的相应文件。我也在使用 Ubuntu。

谢谢您的帮助!

答案1

尝试一下:

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 数据包,表明端口已关闭(无法访问),但您不能依赖它(防火墙等)

答案2

我认为这个问题必须这样回答:是的,有一种方法可以发送使用 Netcat 通过 UDP 传输文件。但是,无法可靠地收到此文件位于目标主机上。

如果您想在目标主机上拥有可用的文件,请寻找其他解决方案。

答案3

使用 TCP 选项不是保证您的文件能够完整地收到。

TCP 仅提供 16 位错误保护。这意味着每 65,536 个传输错误中,会有 1 个会通过。

为了在系统之间安全地传输文件,您应该在发送之前计算整个文件的哈希值,并在接收后进行验证。

如果您这样做,通过 UDP 发送是完全有效的。但是,您希望传输错误的概率非常低。不要在繁忙的 WiFI 网络上或大陆另一端的计算机上尝试这样做。但在建筑物内通过有线网络,您将很少遇到错误。

相关内容