Menu
CoddyTech

连接被拒绝或超时

Coddy 使用终端进行网络通信 课程的第 18 课,共 47 课。

连接失败时,通常会以几种特定方式之一失败,每种方式都指向不同的问题。curl 会通过退出码报告失败类型。退出码是命令运行后留下的数字,可以通过 $? 查看。

curl -s http://127.0.0.1:9999/
echo $?

有三个值得记住:

  • 0:成功
  • 7:连接被拒绝,机器响应了,但表示没有服务在该地址监听
  • 28:超时,完全没有收到响应

7 很快,28 很慢,这种差异就是诊断依据。连接被拒绝意味着你联系到了机器,并得到了明确的拒绝,因此地址正确,但服务没有运行。超时意味着你的请求消失了,这通常表示防火墙丢弃了请求,或者地址错误。

challenge icon

挑战

困难

让两次请求都失败,并读取退出码。

  1. 向 http://127.0.0.1:9999/ 请求页面,此处没有服务在监听,然后打印 refused=,后面跟上退出码
  2. 使用 --max-time 2,对 http://10.255.255.1/(一个会吞掉流量的地址)执行相同操作,然后打印 timeout= 和它的退出码

预期输出:

refused=7
timeout=28

$? 保存刚刚运行的命令的退出码,所以要立即读取它。

亲手试试

终端
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

使用终端进行网络通信中的所有课

自己练习: Terminal 在线编辑器