如何让我的 Java 应用程序在某个套接字(例如 172.16.1.10:8080)上运行 HTTP 服务器并使其在网络上的另一台计算机连接到域(例如http://myjavadomain.com
)时被重定向到套接字?
2 回答
如果您使用的是 Apache Tomcat,那么以下配置将对您有所帮助。
Fot Apache Tomcat 您必须在 TOMCAT_HOME 位置的配置位置中的主机条目上进行。
请按照以下步骤对您有帮助
1)在文件中
2)的位置找到server.xml
文件,使以下主机条目conf
TOMCAT_HOME
server.xml
<Host name="www.xyz.com" debug="0" appBase="webapps/mynewhost" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
<Logger className="org.apache.catalina.logger.FileLogger" directory="logs" prefix="mynewhost_log." suffix=".txt" timestamp="true"/>
</Host>
In appBase property place the location of your web app
3)现在在浏览器中打开上面的网址。
如果您想运行一个成熟的 HTTP 服务器,那么您可能需要使用一些外部库。例如,Tomcat是用 Java 编写的,但也有 SUN 的httpserver 包。如果它只是一个简单的套接字服务器,你可以使用 java.net 包中的内置类:
ServerSocket server = new ServerSocket(8080);
while (running) {
Socket socket = server.accept();
handleConnection(socket);
}
这将侦听端口 8080 上的传入套接字连接,并Socket
在客户端连接时创建一个新连接。然后,您可以通过Socket
'InputStream
和与客户端通信OuputStream
,您可能会在单独的线程中执行此操作,以便您ServerSocket
可以继续侦听来自其他客户端的传入连接。
至于您问题的第二部分:默认情况下,Web 浏览器将连接到端口 80,您可以通过多种方式进行端口转发。本网站提供了一种使用 iptables 的可能解决方案:
iptables -t nat -I PREROUTING --src 0/0 --dst 172.16.1.10 -p tcp --dport 80 -j REDIRECT --to-ports 8080
但最简单的解决方案是在连接到您的机器时直接指定端口号,例如
http://myjavadomain.com:8080
这是假设您的 DNS 已配置为已将 myjavadomain.com 解析为 172.16.1.10。