Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Работа с сетью > Timeout всего приложения при опросе Socket-а


Автор: Demetrio 28.7.2008, 12:41
Опрошиваю живучесть серверов по порту...
Все хорошо...но когда происходит опрос сокета, то все приложение ждет результата, пока не опрос до конца не пройдет.... сам опрос помещен в отдельный поток.... и все равно задержка идет на все приложение(ничего кроме вызова функции опроса сокета в потоке нет... ничего!) 
Заранее спасибо
Дмитрий

Код

public static boolean checkSocket(String host, int port, int timeout) {
        Socket socket = new Socket();
        try {
            socket.connect(new InetSocketAddress(host, port), timeout);
        } catch (UnknownHostException e) {
            return false;
        } catch (IOException e) {
            return false;
        } finally {
            try {
                socket.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return true;
    }
javascript:%20void(0);

Автор: Joss 29.7.2008, 09:25
Ну, насколько мне известно,
Код

Socket.connect(...);

блокирует текущий поток до установления соединения либо возникновения исключения.
Нужно бы посмотреть код, из которого этот опрос вызывается.

Автор: Demetrio 29.7.2008, 11:45
Вот откуда вызов....
MyThread наследуется от Thread
checkRun проверяет живучесть GUI каждые 30 секунд....

Код

thr2 = new MyThread("refreshStatusServer", 30) {

            protected void ActionThread() {
                System.out.println("rrr");
                SwtTsm.xmlConfig.updateStatus(resultSERVERS);
            }

            protected boolean checkRun() {
                return (tblviewTSM.getTable().isDisposed()) ? false : true;
            }
        };

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)