netty-Netty 服务器绑定的端口有误

问题描述

Netty 服务器绑定的端口有误

本人刚接触Netty/java。遇到一个纠结了我一天的问题,不知道是怎么处理的,特上来求教各位大牛,
分数可能不多,但是真心求大神们解决!
问题是这样的,我用的是Netty2.3.5版本。
服务器端的ServerBootstrap对象绑定bind(9002) 9002端口号。
客户端bootstrap.connect(new InetSocketAddress("124.232.147.45", port),new InetSocketAddress(9001));明明指明了是9001调用服务器的9000端口,但是部署在服务器后,绑定的不是9001端口,而是服务器随机分配的一个。
代码如下:(服务器)

Executor executor = Executors.newCachedThreadPool();
ServerBootstrap bootstrap = new ServerBootstrap(new NioServerSocketChannelFactory(executor,executor));
//ClientSocketChannelFactory cf = new NioClientSocketChannelFactory(executor, executor);
bootstrap.setPipelineFactory(new ChannelPipelineFactory() {
public ChannelPipeline getPipeline() throws Exception {
ChannelPipeline pipeline = Channels.pipeline();
pipeline.addLast("encode", new StringEncoder());
pipeline.addLast("decode", new StringDecoder());
pipeline.addLast("handler", new ChatServerHandler());
return pipeline;
}
});
bootstrap.setOption("child.tcpNoDelay", true);
bootstrap.setOption("child.keepAlive", true);
bootstrap.setOption("child.reuseAddress", true);
bootstrap.bind(new InetSocketAddress(9000)) // 绑定端口;

 客户端

private final static int port=9000;
ClientBootstrap bootstrap;
ChatClientHandler handler;
ChannelFuture channelFuture;
bootstrap.setPipelineFactory(new ChannelPipelineFactory() {
public ChannelPipeline getPipeline() throws Exception {
ChannelPipeline channelPipeline = Channels.pipeline();
channelPipeline.addLast("encode", new StringEncoder());
channelPipeline.addLast("decode", new StringDecoder());
channelPipeline.addLast("handler", handler);
return channelPipeline;
}
});
bootstrap.setOption("tcpNoDelay", true);
bootstrap.setOption("keepAlive", true);
bootstrap.setOption("reuseAddress", true);
bootstrap.connect(new InetSocketAddress("124.232.147.45", port),new InetSocketAddress(9001));// 就这里,我明明指明了是9001端口,服务器端打印的确是其他的端口,如果124.232.147.45换成127.0.0.1,把本机作为服务器,局域网上的另外一台机器作为客户端,那么端口是对的,是9001端口。如果我把服务器部署在服务器上,接着客户端也部署在另外的服务器上面,绑定的端口有事正确的。这是为什么呢?


解决方案

从新试着绑定一下9001端口呢?

解决方案二:

客户端端口一般都是随机的

时间: 2024-11-03 20:49:27

netty-Netty 服务器绑定的端口有误的相关文章

android-Android Netty 和服务器绑定

问题描述 Android Netty 和服务器绑定 有Android客户端使用Netty和服务器端建立连接,服务器端有一个百度地图js页面,可以根据手机号码查询一些数据,现在要求是使用Android客户端发送手机号码到服务器端,服务器端执行查询页面并返回结果,结果能成功反回了,现在是服务器端拿到了手机号码,如何执行那个查询页面

tcp连接-TCP连接时,服务端监听socket接收客户端连接后新创建的socket默认绑定的端口是监听端口吗?

问题描述 TCP连接时,服务端监听socket接收客户端连接后新创建的socket默认绑定的端口是监听端口吗? 比如用来监听连接的socket绑定23端口,服务端每接受一个连接都新开一个线程和客户端通信,并把新socket传递给新线程,是不是所有新创建的socket都是经过23端口和客户端通信? 解决方案 是的,都通过端口23进行通信 解决方案二: 都是监听端口,如果不是客户端就不能将数据发送到服务器 解决方案三: 23只是监听建立连接,后续数据交换走实际上端口

服务器80/21端口用telnet测试正常,但运行时提示“每个套接字地址只允许使用一次”错误。

问题描述 服务器80/21端口用telnet测试正常,但运行时提示"每个套接字地址只允许使用一次"错误. 用telnet测试万网提供的服务器80/21端口正常,但运行时提示"每个套接字地址只允许使用一次"错误.若把端口换为4567就能正常运行,但此端口没有开放.部分源代码如下 IPEndPoint localep = new IPEndPoint(IPAddress.Parse("121.42.134.161"), int.Parse("

WAS6非root用户不能绑定80端口

问题描述 WAS6非root用户不能绑定80端口,提示80端口被占用,有哪位知道怎么解决的? 解决方案 解决方案二:可以查询一下那个程序正在使用80端口.如果是aix可以这样netstat-Aan|grep80查出sockaddrrmsocksockaddrtcpcb查出进程号.一般was和ihs(ibmhttp服务器)一起使用,是不是ihs占用了这个端口

telnet 服务器的25端口不通(无法发送邮件)的解决办法

今天客户跟我讲他有台服务器要通过smtp方式向domino服务器中发送邮件,但是他的服务器无论如何都访问不到domino服务器的25端口,让我过去帮忙解决,解决过程如下:  步骤一:检查172.1.1.208 25端口是否开启,检查后已经开启  步骤二:其他服务器访问172.1.1.208 25端口是否能访问:用我自己的电脑访问可以访问  结论:问题不是出在172.1.1.208服务器,应该是服务器172.1.1.171的问题或者他们之间的网络问题  步骤三:测试同一网段其他的机器能否访问,在同

用服务器的80端口怎麽跟android交换数据?谁能提供个ASP.net参考范例程序?

问题描述 用服务器的80端口怎麽跟android交换数据?谁能提供个ASP.net参考范例程序? 目前服务器只有80端口开放,android端用HttpURLconnection类通讯交换数据.不知服务器这端用ASP.NET如何实现?如有人知道,请提供个DEMO程序. 解决方案 两个例子http://www.tuicool.com/articles/IvaAjavhttp://xdwangiflytek.iteye.com/blog/1698300 解决方案二: 用ASP.NET的C#语言实现.

大量网络连接时,服务器使用一个端口接收所有连接的数据和使用一个端口对应一个连接有区别吗?

问题描述 大量网络连接时,服务器使用一个端口接收所有连接的数据和使用一个端口对应一个连接有区别吗? 看过一个程序,TCP连接,每个连接都是让客户端用不同的端口,但是想了一下觉得没什么必要,比如HTTP服务器就是一直用80端口处理所有的连接,也都处理得很好.所以就有了题目上的问题,请知道的人指教一下,谢谢! 解决方案 补充一下说明吧,对于IP层来说,只负责把数据送到节点上,而端口就是标识节点上的应用.所以对于不同的应用通讯,肯定不能用一个端口. 但对于一个应用来说,可以用一个端口.根据客户端的端口

给web服务器增加其它端口实例[apache+php]

给web服务器增加其它端口实例[apache+php教程] /*  找到你的apache安装目录,找到httpd.conf文件,  搜索#listen这一句,在下面增加 listen 800  listen 801  listen 802  这里是测试,你可以根据你的需要增加不同的监听端口,好了apache web的端口开好了,我们要来配置一下虚拟上当了.    找到  #<virtualhost *:80> #    serveradmin webmaster@dummy-host2.php

udp-UDP绑定本地端口和IP,用sendto向指定端口发广播数据失败

问题描述 UDP绑定本地端口和IP,用sendto向指定端口发广播数据失败 MFC下,上位机采用UDP协议,绑定本地端口60000,向目标端口50000发送广播数据,然后单片机应答.但是上位机调用sendto函数发送失败! 解决方案 代码如下: int ret = -1; CString str; char buf[10] = {0,1,2,3,4,5,6,7,8,9}; /* 加载套接字库 */ if (!AfxSocketInit()) MessageBox("加载套接字库失败!"