У меня есть Linux с виртуальным IP-адресом.Вот часть вывода из ip addr
:
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
link/ether e4:1f:13:60:10:34 brd ff:ff:ff:ff:ff:ff
inet 212.179.158.220/25 brd 212.179.158.255 scope global eth0
inet 212.179.158.221/32 scope global eth0
inet6 fe80::e61f:13ff:fe60:1034/64 scope link
valid_lft forever preferred_lft forever
На этом компьютере я создаю DatagramSocket, привязанный к new InetSocketAddress(port)
, который должен привязываться к подстановочному IP.
Приложение тогдаполучает сообщения, отправленные на 212.179.158.220 или 212.179.158.221 , но когда он отвечает, ответ всегда воспринимается как 212.179.158.220 , тогда как I 'Мне нравится, что удаленный адрес ответа отражает IP-адрес, который получил исходное сообщение.
Я могу создать сокет для каждого IP-адреса и прослушивать оба;это дает мне поведение, которое я хочу, но это означает, что если виртуальный IP-адрес появляется во время работы приложения, он будет игнорировать сообщения, отправленные VIP.
Итак, теперь, когда я изложил это:Есть ли способ сделать так, чтобы удаленный хост ответного сообщения совпадал с тем, на котором пришло исходное сообщение?Я не ожидал бы, что это будет автоматически, так как откуда сокет узнает, чтобы связать этот ответ с этим сообщением?Но, возможно, есть способ заставить его?
Заранее спасибо.
Майкл