Розетки отключаются автоматически в AS3 - PullRequest
2 голосов
/ 11 марта 2012

Я создал объекты Socket и ServerSocket в as3, затем подключил сокет, используя метод connect, передав ему хост и порт. Также я заставил объект ServerSocket прослушивать входящее соединение из сокета, отличного от только что созданного сокета. Когда ServerSocket обнаруживает соединение и начинает получать данные, объект сокета автоматически отключается. Поэтому я хочу знать, как сохранить соединение в объекте сокета ..

1 Ответ

3 голосов
/ 12 марта 2012

Я публикую это как ответ, а не просто ссылаюсь на этот вопрос как на дубликат, потому что ваша проблема не совсем совпадает с вопросом и ответом, на который я собираюсь ссылаться здесь. Ответ, на который я ссылаюсь, однако, предоставляет ресурсы, которые помогут вам понять модель безопасности за соединительными сокетами, которая, я думаю, является проблемой здесь:

серверное гнездо air 2.6 и разъем ActionScript 3

Отрывок из связанного ресурса, который демонстрирует «рукопожатие», когда файл политики передается в соединительный сокет:

private function handshakeHandler( event:ProgressEvent ):void
{
    var socket:Socket = event.target as Socket;

    //Read the message from the socket
    var message:String = socket.readUTFBytes( socket.bytesAvailable );
    logCallback( "Received: " + message);
    if( message == "" )
    {
        var policy:String = '\x00';
        socket.writeUTFBytes( policy );
        socket.flush();
        socket.close();
        logCallback("Sending policy: " + policy);
    } else if ( message == "BEGIN" )
    {
        socket.removeEventListener( ProgressEvent.SOCKET_DATA, handshakeHandler );
        socket.addEventListener( ProgressEvent.SOCKET_DATA, socketDataHandler );
        socket.writeUTFBytes( "READY" );
        socket.flush();
    } 
}

Файл политики, используемый в этом примере:

<cross-domain-policy>
    <allow-access-from domain="*" to-ports="8087" />
    </cross-domain-policy>\x00
...