我正在使用Netty与Java试图配置一个TCP客户端。一切工作到目前为止,除了我连接端口1050,但是当我调用处理程序的messageReceived()方法messageEvent.getRemoteAddress(),我得到端口1500.我更改端口为1049,但我'米仍然收到1500.这是Netty的问题,或者它可能是服务器的问题?Netty给我一个错误的端口使用TCP
我在这里的硬件设置是:这个netty客户端运行在Java服务器上,并且有几个访问控制设备在这里传播。这些设备作为tcp服务器,netty作为客户端,处理服务器发送的所有内容,并只回复它们。
TCP服务器初始化是这样的:
private ChannelFactory fabrica;
private ServerBootstrap bootstrap;
public void iniciarServidorTCP() {
fabrica = new NioServerSocketChannelFactory(
Executors.newCachedThreadPool(),
Executors.newCachedThreadPool());
bootstrap = new ServerBootstrap(fabrica);
bootstrap.setPipelineFactory(new ChannelPipelineFactory() {
@Override
public ChannelPipeline getPipeline() throws Exception {
ChannelPipeline pipeline = Channels.pipeline();
pipeline.addLast("decoderDeMensagem", new MensagemDecoderTCP());
pipeline.addLast("handlerGerente", new GerenteTCP());
pipeline.addLast("encoder de mensagem", new MensagemEncoderTCP());
return pipeline;
}
});
bootstrap.setOption("child.tcpNoDelay", true);
bootstrap.setOption("child.reuseAddress", true);
bootstrap.bind(new InetSocketAddress(1050));
}
任何想法,为什么我得到1500,而不是1050?这可能是设备的问题吗?
嗯,是的,我知道,它应该是这样,问题是它不是那样。服务器和客户端都配置了端口1050,但我以某种方式收到1500,这就是我想知道为什么 –
客户端绑定到端口1050?你测试过,以确保绑定成功吗? (如果你知道,为什么你粘贴所有不相关的代码?服务器如何设置它的端口与涉及客户端如何设置其端口以及服务器如何确定客户端端口的问题无关。) –
绑定成功是因为我能够与设备进行通信,并且是的,客户端绑定到端口1050,否则它将不会从服务器接收数据。由于我在这方面的知识有限,所以我粘贴了代码,所以我认为这可能是因为启动时配置错误。我会做更多的测试,以确保绑定是正确的,如果是的话,我真的不知道它有什么问题,因为在同一个项目中,我也有UDP连接,使用几乎相同的设置,并且端口绑定是完美无瑕的。 –