Основы вызовов iostream и read / writeObject

Я проектирую Java-сервер для ответа на несколько клиентских запросов. Таким образом, конструкция в основном имеет серверный сокет, принимает клиентский сокет, создает inputObjectStream и outputObjectStream из клиентского input / outputStream.

Затем я использую writeobject на клиенте, чтобы сделать запрос, readObject на сервере, чтобы получить запрос. Обработайте его, запишите объект обратно в тот же поток, что и ответ, и в объект чтения на стороне клиента, чтобы обработать ответ.

Теперь, если я запускаю код на эмуляторе / устройстве Android, все работает нормально. Тот же фрагмент кода, если я запускаю "тестовый пример java для android junit", я получаю исключение после того, как он обработает все мои запросы. Исключение составляет вызов readObject на стороне сервера.

java.io.EOFException    at
java.io.ObjectInputStream$BlockDataInputStream.peekByte(ObjectInputStream.java:2570)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1314)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:368)`

Вопрос Правильно ли читать / писать объекты в iostream?

Отредактировано

У меня есть образец проекта, загруженный на 4shared.com (http://www.4shared.com/ archive / 98gET_pV / Issue15426tar.html) ИЛИ (http://www.sendspace.com/file/v04zjp)

Test 1 (PASS)

  1. Проект TestServer, запустите его как проект Java-приложения
  2. TestClient, запустите его как приложение Android

Вывод консоли

Открыт сокет сервера /127.0.0.1

Принято сокет клиента

Создан входной поток

Создан выходной поток

Прочитать объект создан

Тест 2 (FAIL)

  1. Проект TestServer, запустить его как проект Java-приложения
  2. TestClient, запустить его как Android Junit Test

Вывод консоли

Открыт сокет сервера / 127.0.0.1

Разъем клиента принят

Error : Unable to open server socket. Server wont load.
java.io.EOFException
at java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2297)
at java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:2766)
at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:797)
at java.io.ObjectInputStream.<init>(ObjectInputStream.java:297)
at com.test.server.myThread.run(Main.java:52)
at com.test.server.Main.main(Main.java:32)
17
задан Siddharth 26 February 2012 в 07:22
поделиться