我的应用程序侦听端口 8180。
当我尝试本地连接到端口 8180 时。连接被拒绝。但是当我尝试使用 ip 连接到端口时。我能够连接。
[root@MUMLGOMAPP002 ~]# telnet 10.209.129.54 8180
Trying 10.209.129.54...
Connected to MUMLGOMAPP002 (10.209.129.54).
Escape character is '^]'.
^]
telnet> q
Connection closed.
[root@MUMLGOMAPP002 ~]# telnet localhost 8180
Trying 127.0.0.1...
telnet: connect to address 127.0.0.1: Connection refused
telnet: Unable to connect to remote host: Connection refused
我的界面是:
[root@MUMLGOMAPP002 ~]# ifconfig
bond0 Link encap:Ethernet HWaddr 44:1E:A1:73:F7:50
inet addr:10.209.129.54 Bcast:10.209.129.63 Mask:255.255.255.224
UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1
RX packets:322997568 errors:23 dropped:0 overruns:0 frame:0
TX packets:304470664 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:213628580915 (198.9 GiB) TX bytes:217449664400 (202.5 GiB)
我想知道 telnetting localhost 和 ip 有什么区别。
答案1
网络进程可以bind
是特定地址,也可以是任意地址。
要查看您正在做什么,请尝试lsof -n -i TCP:8180 -s TCP:LISTEN
.
您应该看到:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
[lots of other stuff...............................] 10.209.129.54:8180 (LISTEN)
或者
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
[lots of other stuff...............................] *:8180 (LISTEN)
第一个告诉您您的进程绑定到该特定 IP 地址,我想您会看到这一点。
执行此操作时telnet localhost 8180
,telnet
会将主机名解析为 IP 地址。它应该解决127.0.0.1
。因此您的系统尝试连接到127.0.0.1:8180
.如果您的服务器只是侦听10.209.129.54:8180
,网络层将拒绝连接到127.0.0.1:8180
.
如果您需要使两者都工作,则取决于您使用的服务器程序。
如果您谈论的是 JBoss,它似乎通常使用端口 8180,请参阅https://developer.jboss.org/thread/168789了解如何使两者都发挥作用。请注意,如果您在同一主机上运行多个 JBoss 服务器,这样做可能会导致混乱。