Как определить, был ли апплет загружен через IPv6 - PullRequest
0 голосов
/ 11 марта 2011

У меня есть апплет, который подключается к службе, работающей на том же хосте. Веб-сервер, на котором размещен апплет, прослушивает как IPv4, так и IPv6, как и служба, к которой апплет хочет подключиться.

Проблема в том, что из в апплете все, что я могу получить, - это URL-адрес страницы или URL-адрес CodeBase. По URL-адресу я не могу определить, был ли он разрешен браузером в IPv4 или IPv6, поэтому, когда апплет был загружен через IPv6, и я использую URL-адрес, чтобы сообщить апплету, какой сервер для поиска службы на нем не работает, песочница правила, так как по умолчанию он разрешается по IPv4-адресу.

Единственное решение, которое приходит на ум, - это подписать апплет, чтобы он мог запрашивать подключение к произвольным серверам, но я надеялся на более простое решение (не включающее покупку сертификатов или добавление моего собственного CA в доверенное хранилище на все системы, имеющие доступ к сайту).

Кто-нибудь нашел лучшее решение.

1 Ответ

2 голосов
/ 11 марта 2011

Использовать InetAddress.getAllByName () . Порядок результатов скажет вам, что вы должны использовать (а именно, вы должны сначала попытаться использовать результат [0]).

Важным вопросом является не «как был загружен апплет», а «как мне подключиться к хосту».

...