私は、内蔵のhttpサーバーを搭載したAndroid UPnPアプリケーションを開発しようとしているため、lan上のデバイスからのメディアファイルを処理できます。Android Httpサーバーと壊れたパイプ
私が使用したWebサーバーの最初の実装は、Apache HttpCore http://hc.apache.org/httpcomponents-core-ga/index.htmlのElementalHttpServerの例に基づいていました。 Androidライブラリに既に含まれているorg.apache.http要素がhttpCore jarに含まれている最新のものと異なるため、少し変更する必要がありました。
Androidのものをjarのものに置き換えようとしましたが、できなかった - Androidライブラリのものが優先されます。ライブラリの順序を変更すると、重複するクラスに問題がありました。
jarの代わりに、私はソースコードを入れて、重複したクラスの問題を避けるためにパケット名を変更しました。
破損したパイプの問題と接続の問題が解決されました。
また、NHttpServerはHttpCoreNIOから試しました.HttpCoreNIOは基本的なhttpCoreとは異なるクラスセットを持っていて、Android自体のhttpCoreと競合することなく組み込み使用することができるからです。
その後、私はとても太っすべてのHTTPサーバの最適に動作するようだが、それでも他のすべてと同じ問題に悩まされているNanoHTTPDを使用:最近
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を実装しましたが、問題は依然として続きます。 要求側のデバイスが要求の無限ループに入ることがあります。
私は間違っていますか?ヘッダーが問題になることがありますか?
これは小さくても転送のためにすぐに起こる、またはデータのみのいくつかの時間/音量後にしていますか? –