http サーバーが組み込まれている Android UPnP アプリケーションを開発しようとしているので、LAN 経由でデバイスからメディア ファイルを提供できます。
私が使用した Web サーバーの最初の実装は、Apache HttpCore http://hc.apache.org/httpcomponents-core-ga/index.htmlの ElementalHttpServer の例に基づいていました。Android ライブラリに既に含まれている org.apache.http 要素が httpCore jar に含まれている最新のものとは異なるため、少し変更する必要がありました。
Androidのものをjarのものに置き換えようとしましたが、それはできませんでした-Androidライブラリのものが優先されます。ライブラリの順序を変更すると、重複するクラスの問題が発生しました。
jar の代わりに、ソース コードを含め、パケット名を変更してクラスの重複の問題を回避しました。
壊れたパイプと接続の問題の問題は解決しませんでした。
また、基本的な httpCore とは異なるクラスのセットがあり、Android 自体の httpCore と競合することなく含めて使用できるため、HttpCoreNIO の NHttpServer も試しました。
次に、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 を実装しましたが、問題は解決しません。要求元のデバイスが要求の無限ループに陥ることがあります。
私は何が間違っているのでしょうか?ヘッダーが問題になる可能性がありますか?