вопрос про xmlPullParser и InputStream в Thread

Ответить
romanew
Сообщения: 13
Зарегистрирован: 11 июл 2012, 10:28

вопрос про xmlPullParser и InputStream в Thread

Сообщение romanew » 04 авг 2012, 14:23

вообщем использую XmlPullParser, на вход даю ему InputStream, который получаю так
GetXml = new Thread(new Runnable() {
public void run() {
try {
sPref = getSharedPreferences("Options",MODE_WORLD_READABLE);
ServerSocket servsock = new ServerSocket(sPref.getInt("Port", 0));
while (true) {
Socket sock = servsock.accept();
InputStream is = sock.getInputStream();
h.sendMessage(h.obtainMessage(XML,is));

}
} catch(Exception e){
Log.d(LOG_TAG,"123" + e.getMessage());
}
}
});
GetXml.start();
после получения отправляю InputStream в Handler и от туда вызывается процедура парсинга

Проблема такая: он обрабатывает все норм, но только после того, как клиент закрывает соединение, а до закрытия, т.е. по ходу получения не хочет.

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: вопрос про xmlPullParser и InputStream в Thread

Сообщение rezak90 » 04 авг 2012, 20:39

что то мне подсказывает что ты не правильно организовываешь клиент-сервер, я когда писал почтовик клиент-сервер на яве, поищу исходники, а то уже сокеты и сам не помню
R.id.team
Политика на форуме запрещена

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: вопрос про xmlPullParser и InputStream в Thread

Сообщение rezak90 » 04 авг 2012, 22:55

Всё вроде повторил. Значит вот что я скажу, видно только малая часть картины ибо кода нету и по этому буду гадать. Самое вероятное здесь то что как я говорил ты не правильно немножко организовал... В хендлер нужно передавать сам сокет, с которым ты уже проделываешь требуемую работу, а ты передаешь только InputStream, и не понятно закрываешь вообще сокет (исходя из того кода который предоставил - нет).
Так что будет весь код - будет решение твоей проблемы.
R.id.team
Политика на форуме запрещена

romanew
Сообщения: 13
Зарегистрирован: 11 июл 2012, 10:28

Re: вопрос про xmlPullParser и InputStream в Thread

Сообщение romanew » 05 авг 2012, 11:52

хорошо, переделал сам InputStream на Socket в хэндлере, из хэндлера запускается парсинг, а там сокет закрывать можно сразу же после того как парсингу задал setInput от сокета?
xpp.setInput(sock.getInputStream(),null);
sock.close();
просто у меня так, работает..) я потестю еще, если оно будет работать, то спасибо вам огромное, вроде ходил вокруг да около, а щас только заработало)

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: вопрос про xmlPullParser и InputStream в Thread

Сообщение rezak90 » 05 авг 2012, 15:35

просто объясню суть работы клиент-серверного приложения: вы в цикле while ждёте подключения любого юзера к вам servsock.accept() , сервер работает в отдельном потоке, потом нужно полученный сокет передать в отдельный поток где уже работать с клиентом до его отключения. А в вашем примере вы передаёте в поток только входную (InputStream) информацию а не сам сокет, вот это меня и насторожило. А так о чём то трудно судить потому как видно лишь кусок кода.
R.id.team
Политика на форуме запрещена

romanew
Сообщения: 13
Зарегистрирован: 11 июл 2012, 10:28

Re: вопрос про xmlPullParser и InputStream в Thread

Сообщение romanew » 16 авг 2012, 05:59

спасибо, сделал, примерно как вы сказали)

Ответить