0

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);

ここで、クライアント接続が開始されたポート (クライアント側) にチャネルをバインドする bind メソッドを用意しないのはなぜでしょうか? 提供する必要があるのは、サーバーのアドレスとポートを次のように指定することだけです。

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

これにより、クライアント側またはサーバー側で新しいチャネルが作成されますか? このチャネルがクライアント側でバインドされているポートは何ですか?

以下のように、サーバー側の BootStrap を実行するときにバインドを行います。

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

クライアントがサーバーにデータを送信しているポートと、使用されているチャネルがわかりません。

4

2 に答える 2

0

を使用してクライアント接続を作成するときはconnect(SocketAddress remoteAddress))、クライアント側でチャネルを作成します。connect メソッドは、ローカル アドレスにバインドしてから、リモート アドレスに接続します。connect メソッドでローカル アドレスを指定しない場合、メソッドはローカル IP とランダムなポートにバインドします。使用するローカル ポートを決定したい場合は、 メソッドを使用する必要がありますconnect(SocketAddress remoteAddress, SocketAddress localAddress)

于 2013-04-24T16:23:51.943 に答える