Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> net help, need your help 
:(
    Опции темы
kasya
  Дата 13.4.2005, 20:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 13.4.2005

Репутация: нет
Всего: нет



Добрый день!

Ситуация такая: сервер(ServerSocket) и клиент(Socket) делают соединение, работают, меняються даными и т.д.
как проверить есть ли соединение между сервером и клиентом если вдруг что-то случилось
с клиентом( я сам прерываю програму). Тогда сервер просто зацикливается, а мне надо вывести
про это сообщение.
Пробовал isConnected, isXXXXXX. Не помогает!!!


Спасибо за ответы!!
PM MAIL   Вверх
batigoal
Дата 13.4.2005, 21:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 2
Всего: 151



А нельзя просто отправить какое-нибудь маленькое сообщение? Если соединения нет, должен выскочить эксепшен.


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
kasya
Дата 13.4.2005, 23:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 13.4.2005

Репутация: нет
Всего: нет



не ужели нету какой-то ф-ции, да и ексепшен что-то не попадался мне. Сервер принимает даные от клиента. Что-то не хочеться услажнять себе жизнь smile
PM MAIL   Вверх
Domestic Cat
Дата 14.4.2005, 00:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 1
Всего: 172



Во-первых стандартные методы все работают, покаих никто не отменял.
Во-вторых - код давай, без кода непонятно о чем разговор.


--------------------

PM   Вверх
batigoal
Дата 14.4.2005, 11:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 2
Всего: 151



Когда я делал подобное на Си, то перед отключением клиента отправлял специальное сообщение, что-нибудь типа "@DISCNCT@" и обрабаывал его на сервере. Или ты имеешь в виду нештатное завершение?


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
kasya
Дата 14.4.2005, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 13.4.2005

Репутация: нет
Всего: нет



смотрите ниже:
Код



public MainServerClass() throws IOException{
        server = new ServerSocket(port);
        System.out.println("Server is started.");
        }
    public static void main(String[] args) throws IOException,Throwable{
        if (args.length!=0) port = Integer.valueOf(args[0]).intValue();  
        
        MainServerClass main;
        System.out.println("Program started.");
        String recieveline;
        
        main = new MainServerClass();
        while (true) {
            try { 
            Thread.sleep(10);
            }
            catch (InterruptedException e) {e.printStackTrace();}
            switch (status) {
                case CONNECT: {



[b]/// Вот тут и надо зделать проверку, может  проверять reciveline???[/b]

                                if (!client.isConnected()) { System.out.println("isClosed");status = DISCONECTING;}
                                if (in.ready()) {
                                    recieveline = in.readLine();
                                    if ((recieveline!=null) && (recieveline.length()!=0)) {
                                        if (recieveline.equals(INDICATE_END_OF_CHAT)) status = DISCONECTING; 
                                        else 
                                        System.out.println("Client sad:" + recieveline);
                                    }
                                } 
                                else
                                    out.println("Heellllooo from server!!!!");
                                break;
                                }
                case DISCONECTING: {
                                System.out.println("Disconnecting");
                                status =  DISCONECT;
                                client.close();
                                server.close();
                                break;
                                }
                case DISCONECT: {   // offline
                                    // go away
                                    status = BEGIN_PROGRAM;
                                    break;
                                }
                case END_PROGRAM: {
                                    System.out.println("End of program");
                                    System.exit(0);
                                    break;
                                  }
                case BEGIN_PROGRAM:    {
                                System.out.println("Waiting for connection.");
                                if (server.isClosed())
                                server = new ServerSocket(port);
                                client = server.accept();
                                in = new BufferedReader(new InputStreamReader(client.getInputStream()));
                                out = new PrintWriter(new OutputStreamWriter(client.getOutputStream()),true);
                                status = CONNECT;
                                break;
                                } //default
                        default: {};
            } // switch
        } //while
    } // main circle

PM MAIL   Вверх
Domestic Cat
Дата 14.4.2005, 20:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 1
Всего: 172



Проще тебе посмотреть сюда
http://java.sun.com/docs/books/tutorial/ne...ientServer.html

и разобраться с кодом; из творего я все равно не пойму, что такое status, где берется client, итп


--------------------

PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Работа с сетью | Следующая тема »


 




[ Время генерации скрипта: 0.0471 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.