2012-03-11 50 views
2

我在as3中創建了一個Socket和一個ServerSocket對象,然後通過傳遞給它一個主機和一個端口,使用connect方法連接套接字。此外,我讓ServerSocket對象監聽來自不是我剛創建的套接字的套接字的傳入連接。當ServerSocket檢測到連接並開始接收數據時,套接字對象會自動斷開連接。所以我想知道如何保持連接活着的插座對象..在AS3中自動斷開套接字

+2

聽起來像是我的安全問題......您的服務器是否有跨域策略? – weltraumpirat 2012-03-11 11:03:23

+0

我相信@weltraumpirat在這裏的錢是正確的。很可能是一個安全問題。您需要確保當連接套接字請求您正在爲其提供套接字安全策略文件時,您應該如此。我會鏈接到一個答案,將爲您解決這個問題。 – 2012-03-11 20:39:26

回答

3

我發佈此作爲答案,而不是隻是將此問題作爲重複引用,因爲您的問題是不完全相同的問題和回答我要在這裏參考。我連接這個問題的答案卻提供資源,幫助您瞭解連接插座背後的安全模型,我相信這是這裏的問題:

air 2.6 serversocket and actionscript 3 socket connection

從鏈接資源的摘錄這表明「握手「該策略文件傳遞給連接插座:

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