![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
sith |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 11.2.2007 Репутация: 1 Всего: 1 |
есть такая тема...
... сервер для каждого нового клиента создает отдельный потоk (ClientThread) который получает обьект Socket s для работы с клиентом... дальше в этом потоке создаються еще два потока которым передаеться все тот же обьект Socket один поток для чтения (InputThread) другой для отправки обьектов (OutputThread)... ... в потоке InputThread осуществляеться чтение обьекта... код следующий
...но этот фрагмент работает... если его размещать в теле метода run потока ClientThread(то есть создателя потоков ввода вывода Input/OutputThread) в потоке InputThread он не работает... при работе дебагером строчка response = (Message) inObj.readObject(); - просто пропускаеться... переменная не инициализируеться... и цикл продолжает выполняться... причем непонятно получаеться что метод readObject() неполучив обьекта продолжил свою работу... не понимаю... исключений никаких не вылазит... ... ЧТО НЕ ТАК? -------------------- Там где ты ставишь глупые смайлики, я вбиваю восклицания знаки!!! |
|||
|
||||
powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 2 Всего: 159 |
есть подозрение, что ты не перекомпилировал класс. Т.е. исходник то сохранил, перекомпилировать забыл, а отладу начал гонять. Попробуй проект почиcтить и сделать полный rebuild. Еще попробуй отладочные сообщения в консоль толкать, так уж точно будет видно как и что работает. |
|||
|
||||
sith |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 11.2.2007 Репутация: 1 Всего: 1 |
Странно все оказалось намного проще...
...
... правда есть еще один ньюанс мне не понятный... но о нем завтра... -------------------- Там где ты ставишь глупые смайлики, я вбиваю восклицания знаки!!! |
||||
|
|||||
cherep |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 11.1.2006 Где: Москва Репутация: нет Всего: 4 |
не очень понятно, для чего порождать 2 потока на чтение и запись в клинтский сокет. Не проще ли работать в рамках одного потока ClientThread?? Особенно если общение между клиентом и сервером предполагается синхронное (прочитал - записал - прочитал - ...). Иначе придется парится с синхронизацией этих 2 тредов.. Но это общие сооброжение. В специфику задачи не вникал..
Это сообщение отредактировал(а) cherep - 6.4.2007, 15:28 |
|||
|
||||
sith |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 11.2.2007 Репутация: 1 Всего: 1 |
идея моя такова... клиент и сервер всегда слушают канал... поэтому InputThread на сервере и клиенте реализуються в отдельных потоках... при возникновении события слушатель потока узнает об этом(пришло сообщение от клиента или сервера) обрабатывает его, выполняет свою логику и если надо создает поток для отправки ответного сообщения...
... клиент и сервер не работают синхронно... я бы даже сказал что модель их работы событийная... событие произошло... выполнились нужные действия и опять слушать... -------------------- Там где ты ставишь глупые смайлики, я вбиваю восклицания знаки!!! |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Работа с сетью | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |