2

您好,我使用netty 4并从不同的源地址发送UDP dgram,我首先尝试将Bootstrap绑定到单个端口bind(0)并使用不同的发送者发送数据报,每个发送者都是我的一个接口的源IP(eth0: 0, eth0:1, ...)。它不起作用,它总是从同一个接口发送。所以不知道是不是bug,可能数据报的sender字段只是用来在recv()中知道sender,而不是在send()中修复source。

接下来,我尝试将我的引导程序多次绑定到我想要使用的所有接口:

foreach (ifaces as iface){
  channels.add(client.bind(iface).sync().channel());
}

但它触发了异常。是否不可能在同一个 bootsrap 上多次调用 bind ?

所以我终于成功地为每个接口创建了一个引导程序,例如:

foreach (ifaces as iface){
  client = new Bootstrap().group(reuseThePool).
     channel(NioDatagramChannel.class).handler(new Handler(this));
  channels.add(client.bind(iface).sync().channel());
}

它有效,但这是要走的路吗?每个 bind() 一个引导程序?

4

0 回答 0