1

我有一个简单的 xinetd 控制脚本,它包装了侦听给定端口的简单 Java 应用程序。由于 xinetd 通过标准输入/标准输出进行对话,我想使用 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 完成了向应用程序发送数据的工作,但不是相反......任何帮助/提示将不胜感激!

4

1 回答 1

0

假设您可以控制 Java 服务器代码,您将添加一个根本不需要的重定向层。不要将 xinetd 配置为调用您的 shell 脚本,而是将其配置为调用您的 Java 应用程序。然后只需使用 Java 中的 System.in 和 System.out - 真的就是这么简单!

一旦连接到 xinetd,您的服务器将能够使用标准输入/标准输出。

于 2016-02-21T20:33:16.863 回答