我需要模拟一个场景(在 UDP 下,如果有的话)
1)nc 服务器监听端口 9000(ncserver1) 2)nc 客户端连接到 nc 服务器并发送“message1”,同时另一个 nc 服务器启动并正在监听端口 9001(ncserver2) 3)收到“message1”时,ncserver1 应该发起与 ncserver2 的连接并发送“message2” 4)ncserver2 收到消息“mess”
这是一个有趣的场景。首先要做的是在 9000 上启动 netcat 等待 message1。sed 用于过滤掉所有不是 message1 的消息,并创建 message2 在收到 message1 时发送出去。
nc -u -l -p 9000 | sed -un 's/message1/message2/p' |./delayed_netcat.sh -u localhost 9001
delay_netcat.sh是来自 mariux的脚本
#!/bin/bash
read line
netcat "${@}" < <(echo $line ; cat)
延迟连接到 9001 直到它有东西要发送。
接下来我们在 9001 上启动另一个 netcat 监听,同时向 9000 发送 message1
nc -u -l -p 9001 | sed -un "s/message2/mess/p" & echo "message1" |nc -u localhost 9000
这里sed用于查找message2并输出message。