0

私はネットワーキングの第一人者ではないので、単純なものが欠けている可能性があります。

netty 4.0.11 http://dl.bintray.com/netty/downloads/netty-4.0.11.Final.tar.bz2を使用して、メッセージ エコー クライアントと msg エコー サーバーの両方を実行可能な jar ファイルとして構築しました。

Maven を使用して正しい依存関係をすべて読み込むことができ、プロジェクトはローカルおよびサーバー上で正しくビルドおよび実行されました。ローカル ホストでサーバーを実行し、同じ (localhost 、ローカル マシンと Amazon ec2 インスタンスの両方で) クライアントからサーバーに接続できます。ここでも、マシンと私の両方でそれ自体 (localhost) に接続できます。サーバーコンピューター。

問題は、サーバーが実行されているマシンの外部からサーバーに接続できないことです。たとえば、ローカル コンピューターで実行されている echo msg クライアントから (ec2 インスタンスで実行されている) echo msg サーバーに接続したいと考えています。

正しいポートとローカル マシンの IP からの UDP を許可するように、Amazon のセキュリティ設定をセットアップしました。ec2 インスタンスで Echo サーバーを実行すると、正しく起動します。

REGISTERED
ACTIVE 
DATAGRAM LISTENING bind=/0.0.0.0:1234 peer=null:0

しかし、ローカル ホストの外部からは接続できません。クライアント マシンから表示されるエラー メッセージは次のとおりです。また、ローカル マシンのすべてのファイアウォールを (一時的に) オフにしました。それでも、接続しようとすると、次のようになります。

CONNECT(/70.36.197.242:1234, null)
10:11:17.000 [connect-0] DEBUG com.barchart.udt.EpollUDT - ep 1 rem [id: 0x3287e50e] DATAGRAM CONNECTING bind=/0.0.0.0:55005 peer=null:0
10:11:17.000 [connect-0] DEBUG com.barchart.udt.EpollUDT - ep 1 add [id: 0x3287e50e] DATAGRAM CONNECTING bind=/0.0.0.0:55005 peer=null:0 ERROR_WRITE
10/24/13 10:11:19 AM ===========================================================
udt.echo.message.MsgEchoClientHandler:
  rate:
             count = 0
         mean rate = 0.00 bytes/s
     1-minute rate = 0.00 bytes/s
     5-minute rate = 0.00 bytes/s
    15-minute rate = 0.00 bytes/s

10:11:20.017 [connect-0] WARN  com.barchart.udt.nio.SelectionKeyUDT - logic error : 
[id: 0x3287e50e] poll=ERROR_WRITE ready=---- inter=-C-- DATAGRAM CONNECTOR CONNECTING bind=/0.0.0.0:55005 peer=null:0
java.lang.Exception: Unexpected error report.
    at com.barchart.udt.nio.SelectionKeyUDT.logError(SelectionKeyUDT.java:436) [barchart-udt-bundle-2.3.0.jar:na]
    at com.barchart.udt.nio.SelectionKeyUDT.doRead(SelectionKeyUDT.java:205) [barchart-udt-bundle-2.3.0.jar:na]
    at com.barchart.udt.nio.SelectorUDT.doResultsRead(SelectorUDT.java:334) [barchart-udt-bundle-2.3.0.jar:na]
    at com.barchart.udt.nio.SelectorUDT.doResults(SelectorUDT.java:309) [barchart-udt-bundle-2.3.0.jar:na]
    at com.barchart.udt.nio.SelectorUDT.doEpollExclusive(SelectorUDT.java:234) [barchart-udt-bundle-2.3.0.jar:na]
    at com.barchart.udt.nio.SelectorUDT.doEpollEnter(SelectorUDT.java:196) [barchart-udt-bundle-2.3.0.jar:na]
    at com.barchart.udt.nio.SelectorUDT.select(SelectorUDT.java:455) [barchart-udt-bundle-2.3.0.jar:na]
    at io.netty.channel.nio.NioEventLoop.select(NioEventLoop.java:596) [netty-all-4.0.11.Final.jar:na]
    at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:306) [netty-all-4.0.11.Final.jar:na]
    at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:101) [netty-all-4.0.11.Final.jar:na]
    at java.lang.Thread.run(Unknown Source) [na:1.7.0_06]
10:11:20.018 [connect-0] DEBUG com.barchart.udt.EpollUDT - ep 1 rem [id: 0x3287e50e] DATAGRAM CONNECTING bind=/0.0.0.0:55005 peer=null:0
10:11:20.018 [connect-0] ERROR c.barchart.udt.nio.SocketChannelUDT - connect failure : [id: 0x3287e50e] DATAGRAM CONNECTING bind=/0.0.0.0:55005 peer=null:0
10:11:20.018 [connect-0] INFO  i.n.handler.logging.LoggingHandler - [id: 0x53f0f817] CLOSE()
Exception in thread "main" java.io.IOException
    at com.barchart.udt.nio.SocketChannelUDT.finishConnect(SocketChannelUDT.java:236)
    at io.netty.channel.udt.nio.NioUdtMessageConnectorChannel.doFinishConnect(NioUdtMessageConnectorChannel.java:132)
    at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.finishConnect(AbstractNioChannel.java:228)
    at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:502)
    at io.netty.channel.nio.NioEventLoop.processSelectedKeysPlain(NioEventLoop.java:417)
    at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:348)
    at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:101)
    at java.lang.Thread.run(Unknown Source)
4

1 に答える 1

0

気にしないで、さらにトラブルシューティングを行った後、解決策を見つけました。Amazon セキュリティ設定でポートを許可するだけでなく、サーバー ファイアウォールで UDP ポートも許可する必要がありました。

于 2013-10-24T14:46:49.430 に答える