2014-10-06 3 views
0

nanohttpd 데모 애플리케이션을 수정하지 않고 Android에서 간단한 웹 서버를 설정하려고했습니다. 현재 사용중인 Android 기기는 Android 4.0.3을 실행하고 있습니다.Android 웹 서버 nanohttpd - 동일한 기기의 브라우저에서 연결할 수 없습니다.

다른 기기에서 웹 서버에 액세스 할 수 있지만 웹 서버와 동일한 Android 기기에서 브라우저 (Firefox, Chrome 및 기본 Android 브라우저)에서 웹 서버에 연결할 수 없습니다. 달리는.

저는 다양한 주소와 포트 조합 (localhost, 127.0.0.1, 10.0.0.2, 실제 할당 된 IP 주소, 포트 8080, 8082)을 시도했습니다. 또한 nanohttpd 응용 프로그램을 127.0.0.1에 직접 바인드하려고 시도했지만 성공하지 못했습니다. 필자는 안드로이드 장치의 터미널 애플리케이션을 사용하여 '핑 (ping)'할 수 있음을 확인 했으므로 네트워크 연결 상태가 양호한 것처럼 보입니다.

브라우저가 로컬 웹 서버 인스턴스에 연결하지 못하게하는 Android에 대한 제한이 있습니까? 그렇다면이 설정이 작동하도록 수정해야하는 구성 설정이나 권한이 있습니까?

+0

이상한 이야기. 그건 그냥 작동해야합니다. – greenapps

답변

1

에있는 VPN이나 ​​프록시 응용 프로그램 또는 데이터 압축을 해제, 내가 무슨 일이 일어나고 있는지에 대한 핸들을 가지고 있다고 생각합니다. 요청을 시도하기 위해 웹 서버 응용 프로그램에서 브라우저로 전환 할 때 웹 서버 응용 프로그램이 일시 중단되고 연결을 허용하지 않습니다. 나는 응용 프로그램이 백그라운드에서 실행되고 있다고 가정했지만 분명히 그렇지 않습니다.

백그라운드 서비스로 웹 서버를 실행하는 방법을 알아보고 그 웹 서비스가 나를 차지하는 위치를 알아 봅니다.

로빈, 오늘 미리 답변 해 주셔서 감사합니다.

10/08/14 - 업데이트 : Android 서비스 내에 nanohttpd 웹 서버를 삽입 한 후에 원래 의도했던대로 모두 작동합니다. 나는 here이라는 예제를 사용하여 서비스를 정의했다.

KenSt

+0

문제가 없습니다! 당신은 onPause에서 언 바인딩을 시도 할 수 있습니다.나는 당신의 코드를 보지 못했기 때문에 당신이 서버를 멈출 때를 알지 못한다. 그러나 당신의 활동 라이프 사이클을 기억해라. :) 또한, 당신은 자신의 대답을 수락 된 것으로 표시 할 수있다. –

+0

너는 구세주 야. –

0

1) AndroidManifest.xml에서 인터넷 권한을 부여해야합니다.

<uses-permission android:name="android.permission.INTERNET" /> 

2) 또한 포트 80은 루트없이 사용할 수 없습니다.

자세한 내용은 this question을 참조하십시오.

3) 시행 착오의 무리를 통해 장치

+0

답변 해 주셔서 감사합니다. 예, 매니페스트에서 인터넷 사용 권한을 부여했으며 기본적으로 포트 8080을 사용하고 있습니다. 내 데스크톱 PC와 같은 다른 장치에서 웹 서버에 액세스하면 모두 정상적으로 작동합니다. 난 그냥 같은 장치에서 웹 서버에 액세스 할 수 없습니다. – KenSt

+0

기기를 사용해 보았을 때 얻는 혜택은 무엇입니까? 404? 또한 코드를 게시 할 수 있습니까? –

+0

내 구현으로 확장하기 전에 여기에서 수정하지 않고 샘플 코드를 사용하고 있습니다. https://github.com/NanoHttpd/nanohttpd/blob/master/samples/src/main/java/fi/iki/elonen /HelloServer.java. 웹 서버에 대한 TCP 연결이 설정되지 않고 브라우저에 "연결할 수 없습니다."라는 메시지가 나타납니다. – KenSt

관련 문제