Страница 1 из 1

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

Добавлено: 04 авг 2012, 14:23
romanew
вообщем использую 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 и от туда вызывается процедура парсинга

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

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

Добавлено: 04 авг 2012, 20:39
rezak90
что то мне подсказывает что ты не правильно организовываешь клиент-сервер, я когда писал почтовик клиент-сервер на яве, поищу исходники, а то уже сокеты и сам не помню

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

Добавлено: 04 авг 2012, 22:55
rezak90
Всё вроде повторил. Значит вот что я скажу, видно только малая часть картины ибо кода нету и по этому буду гадать. Самое вероятное здесь то что как я говорил ты не правильно немножко организовал... В хендлер нужно передавать сам сокет, с которым ты уже проделываешь требуемую работу, а ты передаешь только InputStream, и не понятно закрываешь вообще сокет (исходя из того кода который предоставил - нет).
Так что будет весь код - будет решение твоей проблемы.

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

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

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

Добавлено: 05 авг 2012, 15:35
rezak90
просто объясню суть работы клиент-серверного приложения: вы в цикле while ждёте подключения любого юзера к вам servsock.accept() , сервер работает в отдельном потоке, потом нужно полученный сокет передать в отдельный поток где уже работать с клиентом до его отключения. А в вашем примере вы передаёте в поток только входную (InputStream) информацию а не сам сокет, вот это меня и насторожило. А так о чём то трудно судить потому как видно лишь кусок кода.

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

Добавлено: 16 авг 2012, 05:59
romanew
спасибо, сделал, примерно как вы сказали)