2011-08-01 18 views
7

मैं एक एंड्रॉइड यूपीएनपी एप्लीकेशन विकसित करने की कोशिश कर रहा हूं जिसमें इसमें एक एम्बेडेड http सर्वर है, इसलिए यह डिवाइस से लैन पर मीडिया फ़ाइलों की सेवा कर सकता है।एंड्रॉइड एचटीपी सर्वर और टूटी पाइप

मैंने उपयोग किए गए वेब सर्वर का पहला कार्यान्वयन अपाचे एचटीपीकोर http://hc.apache.org/httpcomponents-core-ga/index.html से एलिमेंटलहटपसेवर उदाहरण पर आधारित था। इसे थोड़ा सा बदलना पड़ा क्योंकि org.apache.http तत्व जो पहले से ही एंड्रॉइड लाइब्रेरी में शामिल हैं, httpCore जार में नवीनतम शामिल हैं।

मैंने एंड्रॉइड को जार से लोगों के साथ बदलने की कोशिश की लेकिन यह नहीं किया जा सका - एंड्रॉइड लाइब्रेरी में से एक को प्राथमिकता है। जब मैं लाइब्रेरी ऑर्डर बदलता हूं तो डुप्लिकेट कक्षाओं में कोई समस्या थी।

जारों की बजाय मैंने स्रोत कोड शामिल किया और डुप्लिकेट कक्षाओं की समस्या से बचने के लिए पैकेट नामों को बदल दिया।

टूटी हुई पाइप और कनेक्शन समस्याओं के साथ समस्या बनी रही।

मैंने एचटीपीपी सर्वर से एचटीटीपी सर्वर से भी कोशिश की है क्योंकि इसमें मूल httpCore की तुलना में कक्षाओं के अलग-अलग सेट हैं और इन्हें एंड्रॉइड में httpCore के साथ विवाद किए बिना शामिल किया जा सकता है।

तब मैं 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 लागू किया है लेकिन समस्या अभी भी बनी हुई है। कभी-कभी अनुरोध करने वाला उपकरण अनुरोधों के अंतहीन पाश में जाता है।

मैं गलत क्या कर सकता था? हेडर एक समस्या हो सकती है?

+0

इस यहां तक ​​कि छोटे हस्तांतरण के लिए तुरंत होता है, या केवल डेटा के कुछ समय/मात्रा के बाद? –

उत्तर

0

आपके कोड को देखे बिना त्रुटियों के बारे में ज्यादा कुछ नहीं कह सकता .. लेकिन मुझे पहले से एक HTTP सर्वर की आवश्यकता है और एनपीआर ऐप का उपयोग करने के लिए एक उदाहरण के रूप में उपयोग किया गया है। कोड java.net.ServerSocket का उपयोग करने के तरीके का काफी सीधे उदाहरण है।

http://code.google.com/p/npr-android-app/source/browse/Npr/src/org/npr/android/news/StreamProxy.java

संबंधित मुद्दे