Перед тем, как начать, я должен заявить, что прочитал все это, я следил за этим , этим и этим (и более ...) и еще Я не могу подключиться к нашему работающему серверу через Socket через Интернет.
Вот что я пытаюсь сделать в AS3:
var host :String = "192.168.2.11";
Security.allowDomain(host);
Security.allowInsecureDomain(host);
Security.loadPolicyFile("xmlsocket://" + host + ":" + "843");
// TTS server socket
_socket = new Socket();
_socket.addEventListener(Event.CLOSE, handleClose);
_socket.addEventListener(IOErrorEvent.IO_ERROR, handleError);
_socket.addEventListener(SecurityErrorEvent.SECURITY_ERROR, handleSecError);
_socket.addEventListener(ProgressEvent.SOCKET_DATA, handleIncomingData);
_socket.addEventListener(Event.CONNECT, handleConnect);
_socket.connect(host, 1337);
Как видите, хост является локальным адресом, но это не должно иметь значения, пока я нахожусь в этой локальной сети. И я, так как это работает с моей IDE (FD4).
Кроме того, swf находится на том же сервере, что и приложение, к которому он пытается подключиться, но на другом порту.
Файл политики, отправляемый сервером (мы пробовали оба с порта 843 и 1337), выглядит следующим образом:
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<allow-access-from domain="*" to-ports="*" />
</cross-domain-policy>
Мы можем видеть из выходных данных сервера, что это действительно отправляется в соединительный сокет. Нулевой байт, конечно, отправляется после XML-данных. И после этого сервер закрывает соединение. Однако, похоже, что Flash почему-то не нравится, так как «Ошибка № 2048» все еще появляется через ~ 3 секунды.
У нас тут действительно нет идей ...