Я проектирую 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)
Вывод консоли
Открыт сокет сервера /127.0.0.1
Принято сокет клиента
Создан входной поток
Создан выходной поток
Прочитать объект создан
Тест 2 (FAIL)
Вывод консоли
Открыт сокет сервера / 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)