Ответ 1
Я предполагаю, что вы видите шлюз ip, потому что шлюз делает какой-то NAT. Если это так, единственный шанс, который у вас есть, - включить исходный IP-адрес в свой протокол и извлечь его оттуда.
В моем классе (extends SimpleChannelHandler) я пытаюсь получить ip, откуда сообщение было отправлено.
@Override
public void messageReceived(ChannelHandlerContext ctx, MessageEvent ev) throws Exception {
String host = ((InetSocketAddress)ctx.getChannel().getRemoteAddress()).getAddress().getHostAddress();
int port = ((InetSocketAddress)ctx.getChannel().getRemoteAddress()).getPort();
LOG.debug(String.format("host:%s port:%d", host, port));
..
Это печатает ip 10.0.0.1 (шлюз) вместо правильного адреса клиента (10.52.45.4).
Есть ли способ получить ip, который я пытаюсь или может быть что-то не так с конфигурацией сети?
Я предполагаю, что вы видите шлюз ip, потому что шлюз делает какой-то NAT. Если это так, единственный шанс, который у вас есть, - включить исходный IP-адрес в свой протокол и извлечь его оттуда.
Ip-адреса, начиная с 10.0.0, являются внутренними, вы, вероятно, подключаете их к чему-то на одном и том же маршрутизаторе WiFi. Чтобы получить IP-адрес 10.52.45.4, вам необходимо подключиться за пределы вашего маршрутизатора. (не забудьте переместить порт)