当我从调试器退出并重新启动时,我经常收到消息:
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 :(得分:0)
我认为你不能避免它。我只需要一段时间让操作系统在AIR放开后释放套接字。作为一种解决方法,您可以捕获错误并使用计时器每隔几秒重试绑定套接字。
AIR应用程序永远不需要策略文件(除非打开套接字的代码是从应用程序外部加载的。)