Очистка AIR SocketServer? Как закрыть, когда приложение выходит? - PullRequest
0 голосов
/ 05 февраля 2012

У меня есть простое приложение AIR, которое прослушивает сокет с помощью класса SocketServer.

У меня есть следующий код при первом запуске приложения:

if( serverSocket.bound ) 
        {
            serverSocket.close();
            serverSocket = new ServerSocket();

        }
        serverSocket.bind( parseInt( localPort ), localIP );
        serverSocket.addEventListener( ServerSocketConnectEvent.CONNECT, onConnect );
        serverSocket.listen();

Однако я нахожучто если я попытаюсь проверить мой фильм после внесения некоторых быстрых изменений, я не смогу привязать к одному и тому же адресу: порт.Я догадываюсь, что как-то порт еще занят.Я получаю сообщение об ошибке «Операция предпринята на недопустимом сокете».

Но если я немного подожду, а затем протестирую фильм, я могу привязаться к адресу: порт.

Функция close ()не принимать влияние.Могу ли я попробовать закрыть () это, когда пользователь решает выйти из приложения?Есть ли какое-то событие, которое позволяет мне что-то сделать, прежде чем приложение закроется?

1 Ответ

1 голос
/ 05 февраля 2012

Прежде всего сокет - это не тот экземпляр сокета, который был у вас во время предыдущего запуска приложения. Во-вторых, искомое событие

NativeApplication.nativeApplication.addEventListener( Event.EXITING, this.handler_exit );

Вызовите serverSocket.close (); в обработчике событий. Также может быть полезно закрыть все клиентские сокеты, которые были открыты при приеме клиентов.

...