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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ObjectInputStream - программа виснет 
V
    Опции темы
sith
Дата 30.3.2007, 23:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



При запуске следующего кода... дальше строки с инициализацией  inObj прога не идет... и дебагером бился... и головой ... ничерта не пойму...
... ни каких сообщений... искючений... ничего нет... тишина...
 в чем подвох... хелп ми!!!


Код

 
Socket client = new Socket(host,port);
            ObjectInputStream inObj = new ObjectInputStream(client.getInputStream());
            ObjectOutputStream outObj= new ObjectOutputStream(client.getOutputStream());
            
            outObj.writeObject("hello\n");
            outObj.flush();



Это сообщение отредактировал(а) sith - 30.3.2007, 23:26


--------------------
Там где ты ставишь глупые смайлики, я вбиваю восклицания знаки!!!
PM MAIL   Вверх
nornad
Дата 30.3.2007, 23:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1079
Регистрация: 16.2.2007
Где: в Караганде

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



Попробуй взять эти две строки в отдельный catch и ловить Throwable.
Подозреваю, что у тебя это дело происходит в отдельном потоке и исключительная ситуация просто вылетает на самый верх потока без обработки (сам с таким столкнулся недавно).


--------------------
Три достоинства программиста: Леность, Нетерпение и Гордость
Ларри Уолл
PM MAIL WWW ICQ Skype MSN   Вверх
LSD
Дата 31.3.2007, 00:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

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



Цитата(nornad @  30.3.2007,  23:56 Найти цитируемый пост)
Подозреваю, что у тебя это дело происходит в отдельном потоке и исключительная ситуация просто вылетает на самый верх потока без обработки (сам с таким столкнулся недавно).

В таком случае ошибка будет выведена в консоль.


Цитата(sith @  30.3.2007,  23:19 Найти цитируемый пост)
... ни каких сообщений... искючений... ничего нет... тишина...

Попробуй подождать минут 10, есть подозрение что проблемы с сетью.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
sith
Дата 31.3.2007, 10:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



nornad,  брал этот код в блок try/catch ничего не выдает...

...LSD моя прога обращаеться к моему же серверу находящемуся на локалхосте... почему должны быть такие задержки... причем если я использую потоки  PrintWriter/BufferedRеadеr для записи чтения то все работает нормально... но мне нужно серверу обьекты передавать...

Добавлено через 11 минут и 44 секунды
для переменной inObj в дебагере выводиться сообщение >No current context (stack frame)<


--------------------
Там где ты ставишь глупые смайлики, я вбиваю восклицания знаки!!!
PM MAIL   Вверх
LSD
Дата 31.3.2007, 13:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

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



Замени:
Код
ObjectInputStream inObj = new ObjectInputStream(client.getInputStream());

на
Код
InputStream in = client.getInputStream();
ObjectInputStream inObj = new ObjectInputStream(in);

и посмотри в каком именно место произойдет зависание.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
AxNe0
Дата 1.4.2007, 10:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 263
Регистрация: 24.4.2006
Где: St. Petersburg

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



sith, я думаю, у тебя проблема в следующем: при инициализации
Код
ObjectInputStream inObj = new ObjectInputStream(client.getInputStream());

программа "зависает" в ожидании входящих даных, при этом никакого исключения не происходит. Поэтому посмотри, чтобы ты вовремя посылал данные на сокет с сервера и вовремя инициализировал входящий поток (думаю, лучше инициализировать непосредственно перед считыванием)


--------------------
SCJP 6, SCBCD 5, OCEWSD 6
blog
PM ICQ Skype   Вверх
sith
Дата 1.4.2007, 20:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



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


--------------------
Там где ты ставишь глупые смайлики, я вбиваю восклицания знаки!!!
PM MAIL   Вверх
LSD
Дата 1.4.2007, 21:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

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



Эээ...

Ты просто разделил получение InputStream и создание ObjectInputStream и у тебя все заработало?


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
sith
Дата 2.4.2007, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Да простые обьекты типа  String передаються и востанавливаються нормально возникла проблема с передачей собственных обьектов классов...
... клиент отправляет следующие...

Код

InputStream in=client.getInputStream();
            OutputStream out=client.getOutputStream();
            ObjectOutputStream outObj = new ObjectOutputStream(out);
            ObjectInputStream inObj=new ObjectInputStream(in) ;  
            Message mess = new Message("","","NOOP");
            outObj.writeObject(mess);
            outObj.flush();


на сервере следующий код 

Код

Message  mess = (Message)inObj.readObject();


... при работе сервер выдает ошибку...


java.lang.ClassNotFoundException: simpletalkclient.Message
        at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:247)
        at java.io.ObjectInputStream.resolveClass(ObjectInputStream.java:604)
        at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1575)
        at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1496)
        at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1732)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
        at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
        at simpletalkserver.ClientThread.run(ClientThread.java:55)



... почему... вроде правильно я сделал привидение типа...

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


--------------------
Там где ты ставишь глупые смайлики, я вбиваю восклицания знаки!!!
PM MAIL   Вверх
LSD
Дата 2.4.2007, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

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



А в CLASSPATH сервера, класс simpletalkclient.Message присутвует?
Код
Class.forName("simpletalkclient.Message");

отрабатывает без ошибок?


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
sith
Дата 2.4.2007, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



где и как нужно прописать CLASSPATH  сервера... я разрабатываю в нет бинсе...

... куда эту строку вставлять...
Код

Class.forName("simpletalkclient.Message");

        


--------------------
Там где ты ставишь глупые смайлики, я вбиваю восклицания знаки!!!
PM MAIL   Вверх
LSD
Дата 2.4.2007, 13:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

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



Цитата(sith @  2.4.2007,  13:01 Найти цитируемый пост)
где и как нужно прописать CLASSPATH  сервера... я разрабатываю в нет бинсе...

Зависит от твоей структуры проекта. Если ты и клиент и сервер разрабатываешь в одном и том же проекте и одном том же модуле, то с CLASSPATH у тебя все нормально.

Цитата(sith @  2.4.2007,  13:01 Найти цитируемый пост)
... куда эту строку вставлять...

Вставь первой строкой в main сервера.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
sith
Дата 2.4.2007, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



нет... это два разных проекта...


--------------------
Там где ты ставишь глупые смайлики, я вбиваю восклицания знаки!!!
PM MAIL   Вверх
LSD
Дата 2.4.2007, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

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



Тогда тебе надо те классы которые ты собираешься передать по сети, упаковать в jar и подключить как библиотеку к обоим проектам.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
sith
Дата 2.4.2007, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



... так и сделал... заработало... сенкс...


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

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

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


 




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


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

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