交付:一个按行回答的服务
场景:要交付一个 TCP 服务和它的启动脚本,端口在说明里。 任务:写 ~/服务/答.py(一个客户端一个客户端地接;每收到一行:ping 回 pong,「len 文字」回那段文字的 UTF-8 字节
写一个带超时的客户端
场景:本机某端口上有一个 TCP 服务,收到一行就回它的大写。 任务:写 ~/问.py,用法 python3 ~/问.py 端口 文字:连上、把文字加换行发过去、打印回信一行;连接被拒绝就打印「拒绝」
这条连接是谁的
场景:本机端口 ~/说明.txt 里那个数上有一个服务,后台三个脚本各自连着不同的服务,其中一个连的是它。对照表列了八个脚本名。 任务:用 ss -tanp 找出连着这个端口的客户端进程跑的是哪个脚本
拒绝的错误码
场景:本机端口 ~/说明.txt 里那个数上没有任何服务。对照表列了八个数。 任务:用 Python 对它 connect 一次,把抛出的 OSError 的 errno 打印出来,到对照表里查那个数
回信到底有多长
场景:本机某端口上的 TCP 服务,谁连上来它就发一大段字节然后关掉。~/示例.py 是同事写的客户端,只 recv(1024) 一次,打印出 1024——他以为回信就这么长。对照表列了八个数。 任务
有几条连接
场景:本机某端口上有一个 TCP 服务(端口在说明里),后台有几个客户端正连着它不放。对照表列了八个数。 任务:用 ss -tan 数出这个服务上已建立的连接有几条——只数服务端那一头(Local A
它在听哪个端口
场景:同事起了一个 TCP 服务,说端口在 ~/服务/配置.txt——按那个端口连,立刻被拒绝。配置八成是旧的。对照表列了八个数。 任务:用 ss -tln(-p 还能看到进程)找出它实际在听的端口,
把服务起起来
场景:~/回显/回显.py 是一个完整的 TCP 回显服务(端口在 ~/回显/配置.txt)。 任务:把它起起来、留在后台,然后运行 ~/check(它会看端口上有没有 LISTEN,再连上去发一条
从 ss 的一行认东西
ss -tanp 的一行长这样。把状态、本地端口、对端端口、pid 拆出来: line = "ESTAB 0 0 127.0.0.1:25000 127.0.0.1:31000 users:
连一个没人听的端口
真机上 connect 到一个没人监听的 TCP 端口,会【0】。