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