nc -u -l -p 8080
监听 udp 的 8080 端口 , 然后 B 主机上连上去:
nc -u 192.168.1.2 8080
然后像前面测试 tcp 的方法进行检测 , 结束了 CTRL+C 退出 , 看看一边输入消息另外一边能否收到 , 收得到的话可能是你自己的服务原因 , 收不到的话把 nc 测试结果扔给运维/系统管理员 , 让他们赶快检查网关和防火墙配置 , 系统自带的工具测试的结果 , 既简单又权威 。
文件传输
你在一台 B 主机上想往 A 主机上发送一个文件怎么办?不能用 scp / szrz 的话?继续 python 写个 http 上传?装个 ftpd 服务?不用那么麻烦 , 在 A 主机上监听端口:
nc -l -p 8080 > image.jpg
然后在 B 主机上:
nc 192.168.1.2 8080 < image.jpg
netcat 嘛 , 就是用于通过网络把东西 cat 过去 , 注意 , 老版本 GNU / OpenBSD 的 netcat 再文件结束(标准输入碰到 EOF) , 发送文件一端就会关闭连接 , 而新版本不会 , 你需要再开个窗口到 A 主机上看看接收下来的文件尺寸和源文件比较一下判断传输是否结束 。
当传输完成后 , 你再任意一端 CTRL+C 结束它 。对于新版 OpenBSD 的 netcat 有一个 -N 参数 , 可以指明 stdin 碰到 EOF 就关闭连接(和老版本一致) , 我们写作:
/bin/nc.openbsd -N 192.168.1.2 8080 < image.jpg
你机器上的 nc 命令有可能指向 /bin/nc.traditional 或者 /bin/nc.openbsd 任意一个 , 这里显示指明调用 openbsd 版本的 netcat 。
这样在 openbsd 新版本的 netcat 中使用 -N参数 , 就不需要再开个终端去手工检查传输是否完成 , 传输结束了就会自动退出 。其实 GNU 版本的 netcat 也有可以加个 -q0 参数 , 达到和 openbsd 版本 -N 的效果:
/bin/nc.traditional -q0 192.168.1.2 8080 < image.jpg
只不过是 Linux 下面最新的 GNU netcat , 对应 Windows 版本 没有该参数 , 所以从 Windows 传文件过去时 , 少不了再开个终端看一下进度 , 如果是 Linux 端发送就没问题了 。通过管道协作 , 搭配 tar 命令 , 还可以方便的传一整个目录过去 , 有兴趣可以自己研究 。
使用 netcat 这个系统默认安装的工具进行文件传输 , 可以算作你保底的手段 , 当 scp/ftp 都没法使用的情况下 , 你的一个杀手锏 。
网速吞吐量测试
最简单的方法 , GNU 版本的 netcat 加上 -v -v 参数后 , 结束时会统计接收和发送多少字节 , 那么此时 A 主机上显示运行 GNU 版本的 nc 监听端口:
/bin/nc.traditional -v -v -n -l -p 8080 > /dev/null
加 n 的意思是不要解析域名 , 避免解析域名浪费时间造成统计误差 , 然后 B 主机上:
time nc -n 192.168.1.2 8080 < /dev/zero
回车后执行十秒钟按 CTRL+C 结束 , 然后在 A 主机那里就可以看到接收了多少字节了 , 此时根据 time 的时间自己做一下除法即可得知 , 注意 GNU 的 netcat 统计的数值是 32 位 int , 如果传输太多就回环溢出成负数了 。
对于 OpenBSD 版本的 nc 我们可以用管道搭配 dd 命令进行统计 , 服务端运行:
nc -l -p 8080 > /dev/null
客户端运行 dd 搭配 nc:
dd if=/dev/zero bs=1MB count=100 | /bin/nc.openbsd -n -N 192.168.1.2 8080
结束以后会有结果出来 , 注意这里使用了 -N 代表 stdin 碰到 EOF 后就关闭连接 , 这里凡是写 nc 命令的地方 , 代表 GNU/OpenBSD 任意版本的 netcat 都可以 , 显示的指明路径 , 就代表必须使用特定版本的 netcat , 上条命令等效的 GNU 版本是:
dd if=/dev/zero bs=1MB count=100 | /bin/nc.traditional -n -q0 192.168.1.2 8080
其实上面两种方法都把建立连接的握手时间以及 TCP 窗口慢启动的时间给计算进去了 , 不是特别精确 , 最精确的方式是搭配 pv 命令(监控统计管道数据的速度) , 在 A 主机运行:
nc -l -p 8080 | pv
然后再 B 主机运行:
nc 192.168.1.2 8080 < /dev/zero
此时 A 主机那端持续收到 B 主机发送过来的数据并通过管道投递给 pv 命令后 , 你就能看到实时的带宽统计了 , pv 会输出一个实时状态:
353MiB 0:00:15 [22.4MiB/s] [ <=> ]
让你看到最新的带宽吞吐量 , 这是最准确的吞吐量测试方法 , 在不需要 iperf 的情况下 , 直接使用 nc 就能得到一个准确的数据 。
推荐阅读
- 在安全模式下,如何重装Windows系统?详细教程双手奉上,请收藏
- 开了一家茶叶店,主卖红茶和铁观音,可我不知道怎么宣传,茶叶都是批发价格,请帮忙写写宣传语,谢谢了![红茶]
- 发型|烫烫染染,羊毛卷造型烫挂耳染全都有,喜欢请收藏
- 星座男|56岁的香港女星公开发文渴求内地的工作:我还有几分姿色,请我吧!
- 免检车申请成功后,怎么看电子标签
- C盘清理瘦身就这三招 收好下次不必到处找
- |女销售请客户吃饭花费8000元,客户主动买单,收到客户信息,女销售怒了
- 交通银行信用卡怎么申请分期
- 大学生能开通信用卡吗
- 淘宝ifashion报名入口 淘宝ifashion申请一般要多久