Netty客户端连接

时间:2013-03-25 16:10:59

标签: netty

在netty中创建客户端连接时遇到问题。

Configuring a channel
Options are used to configure a channel:

 ClientBootstrap b = ...;

 // Options for a new channel
 b.setOption("remoteAddress", new InetSocketAddress("example.com", 8080));
 b.setOption("tcpNoDelay", true);
 b.setOption("receiveBufferSize", 1048576);

这里,为什么我们没有绑定方法将通道绑定到客户端连接启动的端口(在客户端)? 我们唯一需要提供的是提供服务器地址和端口,如下所示:

channel = bootstrap.connect(new InetSocketAddress(host, port));

这会在客户端或服务器端创建新频道吗?这个频道在客户端绑定的端口是什么?

我们在执行服务器端BootStrap时执行绑定,如下所示

 ServerBootstrap b = ...;
 channel = b.bind(b.getOption("localAddress"));

我很困惑,无法理解客户端将数据发送到服务器的端口以及使用的通道是什么?

2 个答案:

答案 0 :(得分:5)

您应该使用ClientBootstrap.connect(remoteAddress, localAddress)指定要创建的套接字的本地地址。或者,您可以致电ClientBootstrap.bind(localAddress).sync(),然后致电ClientBootstrap.connect(remoteAddress)以实现同样的目标。

答案 1 :(得分:0)

使用connect(SocketAddress remoteAddress))创建客户端连接时,您将在客户端创建一个频道。 connect方法绑定本地地址,然后连接到远程地址。当在connect方法中没有指定本地地址时,该方法将绑定在本地ip和随机端口上。 如果您想决定使用哪个本地端口,则需要使用connect(SocketAddress remoteAddress, SocketAddress localAddress)方法。