Udp AmazonEC2上的Netty UDT示例

Udp AmazonEC2上的Netty UDT示例,udp,amazon,netty,udp-data-transfer,Udp,Amazon,Netty,Udp Data Transfer,我不是一个网络大师,所以我可能错过了一些简单的东西 我已经使用netty 4.0.11将message echo客户端和msg echo服务器构建为可运行的jar文件 我能够使用maven加载所有正确的依赖项,并且项目在本地和服务器上正确构建和运行。我可以在本地主机上运行服务器,并从同一台(本地主机,在本地计算机和amazon ec2实例上)的客户端连接到它。同样,它可以在我的计算机和服务器计算机上连接到自身(本地主机) 问题是我无法从正在运行的机器外部连接到服务器,例如,我想从本地计算机上运行

我不是一个网络大师,所以我可能错过了一些简单的东西

我已经使用netty 4.0.11将message echo客户端和msg echo服务器构建为可运行的jar文件

我能够使用maven加载所有正确的依赖项,并且项目在本地和服务器上正确构建和运行。我可以在本地主机上运行服务器,并从同一台(本地主机,在本地计算机和amazon ec2实例上)的客户端连接到它。同样,它可以在我的计算机和服务器计算机上连接到自身(本地主机)

问题是我无法从正在运行的机器外部连接到服务器,例如,我想从本地计算机上运行的echo msg客户端连接到echo msg服务器(在我的ec2实例上运行)

我已将amazon安全设置设置为允许从正确的端口和本地计算机的ip使用UDP。我在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)

不过,在做了更多的故障排除之后,我找到了解决方案。我除了在amazon安全设置中允许端口,还必须在服务器防火墙上允许UDP端口