![]() |
|
Модераторы: javastic |
![]()
|
|
| AndreyK |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 102 Регистрация: 15.3.2007 Репутация: нет Всего: нет |
Я тут переписываю C++ клиент под андроид.
И вот соединение через сокеты происходит как-то криво, а при отладке вообще беда: На стороне Android клиента код:
Ожидает открытия сокета но управление не возвращает. Но cpp сервер уже открыл соединение создал этот сокет после чего дошел до ожидания поступления данных:
И начинает ожидать ввода данных. А данные то не поступают, потому-что java клиент все еще висит на стадии открытия сокета. И здесь две проги висят во взаимном затыке. И только когда cpp сервер по таймауту прекращает ожидание и закрывает сокет
, java ,как ни в чем не бывало, начинает выполнять код. Сокет возвращается нормальный, в него нормально подаются данные, а то, что он давно закрыт обнаруживается только на стадии чтения ответа от сервера (возникает исключение "broken pipe") Что тут можно сделать? Может я что-то неправильно делаю? Это сообщение отредактировал(а) AndreyK - 25.2.2013, 17:08 |
||||||
|
|||||||
| AndreyK |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 102 Регистрация: 15.3.2007 Репутация: нет Всего: нет |
Похоже это все какой-то кумулятивный эффект от эмулятора плюс мелкие погрешности программы.
Увеличил все используемые таймауты до больших величин и ошибка исчезла. Поэтому в дебагере и не работало - там надо всегда на все infinity выставлять. Даже не знаю какой из таймаутов оказался критичным - повторить эффект больше не удалось. |
|||
|
||||
| AndreyK |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 102 Регистрация: 15.3.2007 Репутация: нет Всего: нет |
Еще добавлю, для тех, кто пишет сетевые утилиты java-cpp, что я еще узнал.
Нельзя в Сервере давать команды:
Даже перед самым закрытием сокета. Использовать только
и ничего больше. Эти команды даются только при аварийном разрыве соединения. Если windows проги нормально при этом (shutdown) завершают работу с сокетом, то java (а может это android? linux?) сразу прекращает читать из него данные. |
||||
|
|||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Android | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |