在Java中保留端口号

时间:2011-12-23 15:54:34

标签: java network-programming port activemq

当我通过在bin /目录中执行批处理文件来运行ActiveMQ时,我可以通过打开Web浏览器并转到http://localhost:8161/admin/来访问其管理控制台。

这让我很好奇。

这是我的本地沙箱,我没有安装任何Web服务器(httpd或其他)。那么,ActiveMQ如何能够在我的机器上“注册”一个端口,并专门听取它呢?

如果我尝试转到http://localhost:8162/admin/(请注意不同的端口#),我会收到无法连接错误。

某处,不知何故,AMQ说“将此URI(localhost:8161)映射到此计算机上的某个根目录”。作为程序员,我对这样的事情感兴趣。

5 个答案:

答案 0 :(得分:3)

Java进程可以使用任何端口(在linux上为> = 1024)作为Web服务器或用于任何其他目的。您不需要单独的Web服务器来执行此操作

答案 1 :(得分:1)

ActiveMQ启动嵌入式Jetty server,它侦听该端口上的HTTP连接。您不需要运行任何其他服务器。这一切都是从Java完成的。如果你深入挖掘,你会在它的底部找到各种各样的ServerSocket。您可以在Java Tutorial中了解有关套接字和侦听端口的所有信息。

答案 2 :(得分:1)

我建议你阅读套接字:here。所有Web服务器都是一个处理HTTP协议的套接字侦听器。 HTTP协议在这里here。 Web服务器通常会处理很多其他事情,但这是基础知识。如果你想要一个也运行web服务器的小程序,我建议不要重新发明轮子。尝试将jetty合并到您的服务器中。

答案 3 :(得分:0)

在最简单的层面上,ActiveMQ在其自身内创建一个ServerSocket实例,并使用此服务器套接字侦听连接。套接字始终绑定到端口。

答案 4 :(得分:0)

一:此端口大于(或等于)1024,这意味着“非root”用户可以监听它。

第二:您只能从专用地址绑定到端口。这意味着ActiveMQ可能只在127.0.0.1(localhost)上打开了该端口。尝试看看你是否可以从外部接口的IP地址打开该URL:你可能不会。

如果您使用的是Unix系统,则可以使用netstat -ltpn检查哪个程序在哪个端口上进行侦听。

绑定到端口的基本系统调用是listen(2)