2

如何让我的 Java 应用程序在某个套接字(例如 172.16.1.10:8080)上运行 HTTP 服务器并使其在网络上的另一台计算机连接到域(例如http://myjavadomain.com)时被重定向到套接字?

4

2 回答 2

1

如果您使用的是 Apache Tomcat,那么以下配置将对您有所帮助。

Fot Apache Tomcat 您必须在 TOMCAT_HOME 位置的配置位置中的主机条目上进行。

请按照以下步骤对您有帮助

1)在文件中 2)的位置找到server.xml文件,使以下主机条目confTOMCAT_HOMEserver.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)现在在浏览器中打开上面的网址。

于 2012-05-25T06:23:47.357 回答
0

如果您想运行一个成熟的 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。

于 2012-05-25T06:20:02.177 回答