2013-12-19 6 views
2

Я пытаюсь создать простую приложение для сообщений на Android с Apache Mina. Я получаю IllegalStateException при звонке connect(new InetSocketAddress(HOSTNAME, PORT)).Apache Mina: IllegalStateException при вызове connect

Вот мой код клиента:
http://pastebin.com/NR2H6X0t

Вот мой код сервера:
http://pastebin.com/Q5fQnu2p

А вот выход LogCat:

http://pastebin.com/Egsh0Ce4

Я тестирование мои приложения в той же сети Wi-Fi с планшетом и pho северо-восток

+1

Я не вижу ничего плохого в вашем коде. Вы уверены, что ваш порт доступен, и ваш сервер там слушает? (хотя это не должно быть проблемой, но просто проверка) – alkis

ответ

5

Даже я не вижу ничего плохого в вашем коде. Но LogCat говорит org.apache.mina.transport.socket.nio.NioSocketConnector.connect() из NioSocketConnector.java класс в строке # 185) ваше приложение бросает NetworkOnMainThreadException. Сначала исправьте это, чем проверьте, получаете ли вы ту же ошибку.

Помимо выше у меня есть предложение (для удобочитаемости целей): В connectToServerButtonClicked() из ClientActivity вместо использования

for (; ;) { 
    //rest of your code 
} 

лучше использовать

while(true){ 
    //rest of your code 
} 

Отредактировано: По просьбе @alkis справляясь мой ответ из комментария ниже, чтобы ответить на вопрос, чтобы получить лучшую повторяемость

NetworkOnMainThreadException: Это исключение составляет thr когда приложение пытается выполнить сетевую операцию в своем основном потоке. Запустите свой сетевой код в AsyncTask.

+1

NetworkOnMainThreadException: это исключение возникает, когда приложение пытается выполнить сетевую операцию в своем основном потоке. Запустите свой сетевой код в AsyncTask. –

+0

Я думал то же самое. Я попробую. –

+0

Пожалуйста, оставьте свой комментарий в своем ответе. Похоже, это решение, поэтому оно должно быть видимым. Отличный ответ, это спасет много людей от будущих разочарований. – alkis

Смежные вопросы