2016-11-23 7 views
1

У меня есть кусок кода в службе, которая прислушивается к порту, а затем регистрирует IP-адрес с помощью HttpListenerContext.Request.RemoteEndPointHttpListenerContext.Request.RemoteEndPoint Ipaddress поведение

Я заметил, что в одной машине " A ", когда удаленная конечная точка также находится на одном компьютере A, HttpListenerContext.Request.RemoteEndPoint возвращает IP-адрес машины A, т.е. что-то вроде 192.168.20.12

Где, как когда один и тот же фрагмент кода запускается на другом компьютере машина B, с удаленной конечной точкой также в том же компьютере B, HttpListenerContext.Request.RemoteEndPoint возвращает 127.0.0.1

Кто-нибудь знает, почему существует разница?

Для моего приложения, я хотел бы иметь правильный IP-адрес (192.168.20.12), а не адрес loopback. Как можно получить эту информацию?

Подробнее: машина А физический рабочий стол работает под управлением Windows 7. Машина B представляет собой экземпляр EC2 под управлением Windows Server 2012.

ответ

1

Проблема не в том, что HttpListenerContext.Request.RemoteEndPoint возвращается wrong IP-адрес ... проблема в том, что все, что подключается к порту, подключается к обратному адресу, и ваш слушатель правильно сообщает об этом. Предполагая, что вы действительно хотите использовать своего слушателя для мониторинга соединений с удаленной машины, это действительно несущественная проблема (поскольку вы не можете подключиться к обратному адресу с удаленной машины). Аналогично, если машина, подключающаяся к вашему порту, имеет несколько IP-адресов, вы не сможете выбрать, какой из них возвращает HttpListenerContext.Request.RemoteEndPoint. Он должен вернуть какой-либо IP-адрес удаленной машине, выбранный для подключения к вашему серверу.

+0

Извините за долгую задержку, я попробовал это: из удаленного приложения вместо 127.0.0.1 я сделал соединение с использованием реального IP-адреса. Не повезло, но HttpListenerContext.Request.RemoteEndPoint вернул 127.0.0.1. – Vicky

 Смежные вопросы

  • Нет связанных вопросов^_^