私のアプリケーションはポート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)
Telnet 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
IPtelnet
アドレスで解決されます。解決する必要があります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 サーバーを実行している場合、これが混乱を招く可能性があります。