我有一个简单的xinetd控制脚本,它包装了侦听给定端口的简单Java应用程序。当xinetd通过stdin / stdout进行通信时,我想使用netcat来重定向到java应用程序的流量。目前我有以下配置。
的xinetd
service my_server
{
type = UNLISTED
disable = no
socket_type = stream
protocol = tcp
wait = no
user = root
port = 2177
log_on_success += DURATION HOST USERID
server = /opt/stuff/my_server.sh
}
my_server.sh
port=2111
# start the java process on the given port
java -jar /opt/stuff/myserver.jar "$port" &
# redirect traffic using netcat
retry_counter=0
until nc -v 127.0.0.1 ${port}
do
let "retry_counter++"
echo "retrying... (${retry_counter})" >> /var/log/smpp_nc
sleep 0.1
done
似乎netcat负责向应用程序发送数据,但不是相反......任何帮助/提示都将不胜感激!
答案 0 :(得分:0)
假设您已经控制了Java服务器代码,那么您将添加一个不需要的重定向层。不要将xinetd配置为调用shell脚本,而是将其配置为调用Java应用程序。然后只需使用Java中的System.in和System.out - 就这么简单!
一旦连接到xinetd,您的服务器就可以使用stdin / stdout。