关于nc命令使用eof断开连接

nc 命令功能非常强大,使用非常方便。关于它的使用,网上有很多资料可以了解到,这里就不再赘述。

本片文章源自于我在尝试通过 nc 传输文件时,发现文件传输完之后,连接没有自动断开,只有手动输入 Ctrl-C 之后才断开连接。

而在另一台机器上,使用nc命令传输文件时,使用Ctrl-C和Ctrl-D都可以关闭连接。

在无法Ctrl-D断开连接的机器上通过man查看nc的参数,发现有一个 -q 参数可以指定EOF作为断开的条件。

 -q seconds   after  EOF  on stdin, wait the specified number of seconds and then quit. If
                    seconds is negative, wait forever.

后来查了一下,发现不同版本的 nc 在断开连接上有些区别:

引用:https://zhuanlan.zhihu.com/p/83959309
老版本的 nc 只要 CTRL+D 发送 EOF 就会断开新版本一律要 CTRL+C 结束,不管是服务端还是客户端只要任意一边断开了,另一端也就结束了,但是 openbsd 版本的 nc 可以加一个 -k 参数让服务端持续工作。
.
老版本 GNU / OpenBSD 的 netcat 再文件结束(标准输入碰到 EOF),发送文件一端就会关闭连接,而新版本不会,你需要再开个窗口到 A 主机上看看接收下来的文件尺寸和源文件比较一下判断传输是否结束。
.
对于新版 OpenBSD 的 netcat 有一个 -N 参数,可以指明 stdin 碰到 EOF 就关闭连接(和老版本一致)
.
GNU 版本的 netcat 也有可以加个 -q0 参数,达到和 openbsd 版本 -N

另外,使用 nc 命令传输文件,相对比 scp 传输文件要快,因为少了数据加密的过程。但是切记要对文件的完整性进行检查,例如使用 md5sum 检查两台机器之间的文件md5是否相同。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我叫RT

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值