我编写了一个echoclient和echoserver网络程序,以便客户端写的消息可以通过echoserver程序回显给客户端。 Echoclient是一个等待用户输入消息的交互式程序。然后它发送消息,获取响应,然后再次等待来自用户的新消息。现在我想写一个脚本shell,这样我就可以每100微秒向服务器发送一条新消息。但我不知道如何将消息传递给echoclient程序。有什么想法?
#connect to the server ...
./echoclient SERVER_IP_ADDR SERVER_PORT
i=1
while [ 1 ]
do
#send "message i" to the server. how to do it?
usleep 100
let i++
done
答案 0 :(得分:2)
mkfifo /tmp/echostuff
./echoclient SERVER_IP_ADDR SERVER_PORT < /tmp/echostuff &
exec 3>/tmp/echostuff
let i=1
while true
do
echo "message $1" >&3
sleep 0.0001
let i+=1
done
答案 1 :(得分:1)
而不是一个fifo(Erik表示),一个简单的管道也应该工作,就像这样(从Erik的anwser窃取的代码):
let i=1
while true
do
echo "message $i"
sleep 0.001
let i+=1
done |
./echoclient SERVER_IP_ADDR SERVER_PORT
这样循环在子shell中运行,所以你不能在循环后访问$i
的新值(它仍然是1)。
另一种方法是将echoclient作为bash协处理器运行,并将其输入连接到echo命令的输出。 (如果你想看到结果,也会变得更复杂。)