关于客户端端口的疑问
来源:12-3 单机百万连接调优过程

慧眼识天下
2018-07-27
在客户端调用bootstrap.connect(SERVER_HOST, port)连接服务器的时候,每次客户端的端口号是随机选取的吗?它是在指定的范围内选取的吗?而且它是选取当前系统中没有使用过的端口号吗?按照(服务器ip,服务器端口号,客户端ip,客户端端口号)确定一连接,上述代码是有可能有重复连接的,尽管概率很小,是吗?谢谢指教!
写回答
1回答
-
如果没有指定端口号的话,是系统随机从未使用的端口中选择一个端口的,对于同一个服务端的ip,如果端口号已使用完,就会报错,不会有端口重复的
当然也可以自己指定端口号,下面是自己指定端口号的例子
public class NettyClient { public static void main(String[] args) { Bootstrap bootstrap = new Bootstrap(); bootstrap.group(new NioEventLoopGroup()) .channel(NioSocketChannel.class) .handler(new ChannelInitializer<SocketChannel>() { @Override protected void initChannel(SocketChannel ch) { } }); SocketAddress remoteAddress = new InetSocketAddress("123.125.115.110", 80); SocketAddress localAddress = new InetSocketAddress(12345); bootstrap.connect(remoteAddress, localAddress).addListener(future -> { if (future.isSuccess()) { System.out.println("success"); } else { System.err.println("error"); } }); } }
012018-07-30
相似问题