如何通过netcat查看发送/接收的数据?

我按照这个post来检查netcat的速度 ,但在他的博客,当他做ctrl-c ,他得到的数据发送收到的字节。

在他的post中跑:

 time yes|nc -v -v -n 192.168.0.8 2222 >/dev/null than after ctrl-c het get: sent 87478272, rcvd 0 real 0m9.993s user 0m2.075s sys 0m0.939s 

当我做ctrl-c ,我没有得到这个数据。

如何通过netcat发送/接收数据?

实际上有两个netcat实现 , 最初由* Hobbit *实现 (在Debian / Ubuntu中称为netcat-traditional )和OpenBSD实现 (在Debian / Ubuntu中称为netcat-openbsd )。 在Debian / Ubuntu中,二进制文件分别被称为nc.traditionalnc.openbsd (而nc是通过备用系统的链接之一)。

你参考的博客文章是使用nc.traditional ,它显示退出时发送/接收的字节。 你可能正在使用nc.openbsd ,而不是。 安装传统的实现并明确地调用它。

 % time yes | nc.traditional -vvn 127.0.0.1 10000 > /dev/null (UNKNOWN) [127.0.0.1] 10000 (webmin) open ^C sent 99422208, rcvd 0 yes 1,06s user 0,09s system 38% cpu 3,003 total 

或者,如果您更喜欢使用nc.openbsd ,则可以将netcat在服务器端的输出传递给wc -c并像下面这样检查输出:

 % nc -l -n -p 10000 | wc --bytes 99422208 

您可以使用Pipe Viewer(pv)实用程序来观察stream的视觉进度。 可以对其进行修改以显示所选单位,并可在大多数分配中使用。

例:

 cat largefile | pv | netcat 192.168.10.1000 1234