将域分配给IP地址

时间:2012-05-25 06:05:34

标签: java http sockets

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

2 个答案:

答案 0 :(得分:1)

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

使用Apache Tomcat,您必须在TOMCAT_HOME位置的配置位置进行主机输入。

按照以下有助于您的步骤

1)在server.xml conf位置找到TOMCAT_HOME文件 2)在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)现在在浏览器中打开上面的URL。

答案 1 :(得分:0)

如果要运行完全成熟的HTTP服务器,那么您可能希望使用一些外部库。例如,Tomcat是用Java编写的,但也有SUN的httpserver package。如果它只是一个简单的套接字服务器,你可以使用java.net包中的内置类:

ServerSocket server = new ServerSocket(8080);

while (running) {
    Socket socket = server.accept();
    handleConnection(socket);
}

这将侦听端口8080上的传入套接字连接,并在客户端连接时创建新的Socket。然后,您可以通过Socket的{​​{1}}和InputStream与客户进行沟通,这可能会在单独的主题中执行,以便您的OuputStream可以继续收听来自其他客户的传入连接。

至于问题的第二部分:默认情况下,Web浏览器将连接到端口80,并且有几种方法可以进行端口转发。使用iptables的一种可能解决方案是this website

ServerSocket

但最简单的解决方案是在连接到您的机器时直接指定端口号,例如

iptables -t nat -I PREROUTING --src 0/0 --dst 172.16.1.10 -p tcp --dport 80 -j REDIRECT --to-ports 8080

这假设您的DNS已配置为已将myjavadomain.com解析为172.16.1.10。