2011-09-06 32 views
2

當我從調試器退出並重新啓動我經常得到消息:AS3 AIR/FlashBuilder如何在退出時釋放套接字?

Error: Error #2002: Operation attempted on invalid socket. 
    at flash.net::ServerSocket/internalBind() 
    at flash.net::ServerSocket/bind() 

我通常要等上一段時間之前,我可以重新啓動,而不錯誤的應用程序。

我該如何避免這種情況?

private function openConnection():void 
    { 
     _serverSocket = new ServerSocket(); 
     _serverSocket.addEventListener(ServerSocketConnectEvent.CONNECT, onConnect) 
     _serverSocket.bind(888); 
     _serverSocket.listen(); 
    } 

    private function onConnect(e:ServerSocketConnectEvent):void 
    { 
     trace("Client is connected"); 
     _clientSocket = e.socket; 
     _clientSocket.addEventListener(ProgressEvent.SOCKET_DATA, onData); 
     _clientSocket.addEventListener(Event.CLOSE, onConnectionClosed); 
    } 
+0

關閉窗口將關閉套接字。您的服務器可能會掛在端口上,但這並不重要。發佈您的AS3代碼。 –

+0

你打電話給政策文件嗎? –

+0

不,我不打電話給政策文件。這對本地網絡上的兩個AIR應用程序是否必需? – davivid

回答

0

我不認爲你可以避免它。我只需要一段時間讓操作系統在AIR放手之後釋放套接字。作爲一種解決方法,您可以捕獲錯誤並使用計時器每隔幾秒重新嘗試綁定套接字。

而AIR應用程序永遠不需要策略文件(除非打開套接字的代碼是從應用程序外部加載的)。