Апплету не удается создать соединение с сокетом на localhost

#java #security #networking #same-origin-policy

#java #Безопасность #сеть #политика того же источника

Вопрос:

У меня есть Java-апплет, который после загрузки на компьютер пользователя (через веб-страницу), я хочу, чтобы он создал серверный сокет и сокет на локальной машине, на которой он просматривается. Это запрещено?

Комментарии:

1. Для получения более подробной информации отправьте SSCCE . Я подозреваю, что, хотя в первых (1) 2 предоставленных ответах есть «доля правды», они оба поняли это немного неправильно. Дайте мне какой-нибудь код для игры, и я проверю свои теории. 1) Ответ Тома кажется правильным.

Ответ №1:

Java-апплеты могут открывать Socket s на хосте того же происхождения. В течение примерно десяти лет они также могут открывать ServerSocket s (ОС обычно ограничивает порты прослушивания до 1024) и принимать соединения только с хоста того же самого происхождения. Кроме того, crossdomain.xml могут быть ослаблены ограничения, установленные в 6u10.

Примечание для localhost: IP-адреса ваших компьютеров, обращенные вовне, не совпадают с 127.0.0.1, код, загруженный с file URL-адресов, не соответствует сетевым подключениям к 127.0.0.1 (хотя иногда пустую строку можно интерпретировать как localhost; также обратите внимание, что ваш путь к классу может указывать (скажем, . ), может быть загружен с приоритетом перед сетевым кодом, в зависимости от того, что именно вы делаете, но обычно не через браузер), а JavaScript имеет разрешения того же источника для подключения только к одному хосту на том же порту, с которого был загружен код.

Комментарии:

1. Хотин, я также пытался использовать свой внешний IP-адрес (найден с помощью whatismyipaddress.com ) но это не сработало

Ответ №2:

если вы подпишете свой апплет цифровой подписью, он сможет работать «неограниченно»http://download.oracle.com/javase/tutorial/deployment/applet/security.html по-видимому (то же самое с java webstart)