Я думаю, что вам, возможно, лучше добиться этого с помощью апплета Java и класса InetAddress . Я не пытался получить внешне видимые IP-адреса раньше, но думаю, что это возможно.
Пример InetAddress
Edit:
Большинство подключений осуществляется от клиента к шлюзу (к n прокси) к сервису.
Шлюз знает IP-адрес клиента, но нет практической причины передавать его любому, кто спрашивает, потому что он почти всегда является частным. См. Меня на диаграмме ниже.
(ME:192.168.0.40 -> {GATEWAY:192.168.0.1) [EXT.IP:56.43.22.8} -> YOU:87.53.57.27]
Если вам нужно однозначно идентифицировать клиентов по IP, приблизительно , тогда вам нужен EXT ernal IP . Если у вашего клиента было прямое соединение, то, скажем, только через маршрутизатор, ваш сервер узнал бы этот адрес при подключении. У Flash Player нет логической причины знать ваш внешний IP, не говоря уже о том, чтобы выставлять его через API, потому что он не может связывать сокеты слушателя.
При использовании HTTP-прокси ближайший (и наиболее уникальный) внешний IP-адрес клиента неизвестен серверу, поскольку серверы видят только последний прокси в цепочке. Кроме того, для чего предназначен прокси-сервер, который может предоставлять адреса своих клиентов - при этом прокси-сервер будет отображаться как спорный.
Так что насчёт Flash Player и P2P? Опять нет сигары;
Все это происходит в собственном коде, в частях виртуальной машины, невидимой для песочницы, в которой выполняется ваш код. Даже если бы вы могли получить к ней доступ, было бы совершенно бесполезно, если бы ваши клиенты подключались через прокси - клиент знает только первый переход и пункт назначения, которые могут быть недоступны без прокси x - и сервер знает только о клиенте y , который может быть или не быть действительным клиентом или последним прокси в цепочке n прокси ...
уточнить:
- снаружи, единственная причина узнать адрес клиента - это подключиться к нему
- внутри, единственная причина узнать ваш внешний адрес - это открыть порт для других, чтобы инициировать соединения с вами
- серверы видят только последнюю ссылку в цепочке, им нужно сообщить что-нибудь еще, например, к какому назначению установить клиентское соединение, но ...
- Flash не может открывать сокеты слушателей, поэтому ему никогда не нужно будет знать, кто он снаружи ...
- и даже если бы это случилось однажды, вам не повезло, потому что клиент, использующий HTTP-прокси, вероятно, недоступен, иначе зачем беспокоиться о прокси?
Если вся причина в желании IP-адресов заключается в уникальной идентификации клиентов? Сгенерируйте GUID и сохраните его с SharedObject - я знаю, что мог бы сказать это раньше, ха