在网络问题的排查过程,我们经常需要去单方地验证客户端或服务端是否正常、以及网络是否可达,往往我们需要编写特定的测试代码,显得非常麻烦,今天将为大家介绍一个神器 —- nc

定义

nc – arbitrary TCP and UDP connections and listens

从定义可以看出,nc用于发送和监听任意TCP和UDP数据,因此我们可以模拟任意的客户端或服务端,下面我们来介绍下具体的使用方法

nc [OPTIONS] [hostname] [port[s]] 


OPTIONS:(常用)

    -4 强制使用ipv4
    -6 强制使用ipv6
    -l 监听
    -p 指定源端口
    -s 指定源IP
    -n 采用数字,而非域名
    -w 设置超时,单位秒
    -u UDP
    -v 输出详情
    -U 采用本地套接字

默认情况nc采用stdin作为输入,stdout作为输出

安装
# for centos
sudo yum install nc

# for debain
sudo apt-get install nc
例子

# 监听1234端口
nc -l 1234    

# 将收到的结果保存到data文件中
nc -l 1234 > data 

# 实时发送数据(按ctrl+d结束)
nc localhost 1234

# 实时发送数据(按指定字符结束)
nc localhost 1234 << EOF
> ...
> EOF

# 发送数据1
echo -n 1 |nc localhost 1234 

# 监听UDP端口
nc -u -l 1234

# 发送UDP
nc -u localhost 1234
有趣的应用
# 扫描TCP端口
nc localhost 1-100

# 扫描UDP端口
nc -u localhost 1-100

# 模拟HTTP请求
nc www.baidu.com 80
GET / HTTP/1.1
host: localhost

# 发送文件
cat 1.log|nc localhost 1234