Android-сервер Http и неработающие каналы

Я пытаюсь разработать приложение Android UPnP, которое имеет встроенный http-сервер, чтобы оно могло обслуживать медиафайлы с устройства по локальной сети.

Первая реализация веб-сервера, которую я использовал, была основана на примере ElementalHttpServer из Apache HttpCore http://hc.apache.org/httpcomponents-core-ga/index.html . Его пришлось немного изменить, потому что элементы org.apache.http, которые уже включены в библиотеку Android, отличались от последних, включенных в банку httpCore.

Я попытался заменить элементы Android на элементы из банки но это невозможно сделать - приоритет имеют те, что в библиотеке Android. Когда я изменяю порядок библиотек, возникла проблема с повторяющимися классами.

Тогда вместо jar-файлов я включил исходный код и изменил имена пакетов, чтобы избежать проблемы с дублированными классами.

Проблема со сломанным каналом и проблемами соединения не исчезла. .

Я также пробовал NHttpServer от HttpCoreNIO, поскольку он имеет другой набор классов, чем базовый httpCore, и может быть включен и использован без конфликта с httpCore в самом Android.

Затем я использовал NanoHTTPD, который, кажется, лучше всех работают http-серверы, такие толстые, но все еще обеспокоенные той же проблемой, что и все остальные:

java.net.SocketException: The connection was reset
at org.apache.harmony.luni.platform.OSNetworkSystem.sendStreamImpl(Native Method)
at org.apache.harmony.luni.platform.OSNetworkSystem.sendStream(OSNetworkSystem.java:498)
at org.apache.harmony.luni.net.PlainSocketImpl.write(PlainSocketImpl.java:585)
at org.apache.harmony.luni.net.SocketOutputStream.write(SocketOutputStream.java:59)
at com.zappotv.network.http.NanoHTTPD$HTTPSession.sendResponse(NanoHTTPD.java:828)
at com.zappotv.network.http.NanoHTTPD$HTTPSession.run(NanoHTTPD.java:478)
at java.lang.Thread.run(Thread.java:1096)

и

java.net.SocketException: Broken pipe
at org.apache.harmony.luni.platform.OSNetworkSystem.sendStreamImpl(Native Method)
at org.apache.harmony.luni.platform.OSNetworkSystem.sendStream(OSNetworkSystem.java:498)
at org.apache.harmony.luni.net.PlainSocketImpl.write(PlainSocketImpl.java:585)
at org.apache.harmony.luni.net.SocketOutputStream.write(SocketOutputStream.java:59)
at com.zappotv.network.http.NanoHTTPD$HTTPSession.sendResponse(NanoHTTPD.java:828)
at com.zappotv.network.http.NanoHTTPD$HTTPSession.run(NanoHTTPD.java:478)
at java.lang.Thread.run(Thread.java:1096)

Недавно я внедрил iJetty в приложение, но проблема все еще сохраняется. Иногда запрашивающее устройство заходит в бесконечный цикл запросов.

Что я делал не так? Могут ли заголовки быть проблемой?

7
задан Stephan 1 June 2013 в 09:19
поделиться