2014-02-07 2 views
3

로컬 데스크톱의 8080에서 NanoHttpd를 실행하고 있습니다. http://localhost:8080/에서 브라우저의 로컬 서버에 액세스 할 수 있습니다. 그 부분은 예상대로 작동합니다.NanoHttpd를 로컬 호스트로만 제한 할 수 있습니까?

그러나 내 이웃 (또는 악화 된 세상)도 http://my.local.ip.add:8080/에 액세스 할 수 없도록하고 싶습니다.

NanoHttpd를 로컬로 실행하는 인스턴스에서이 페이지를 볼 수있는 유일한 사람인 로컬 호스트 액세스로 어떻게 제한 할 수 있습니까?

+0

외부인이 액세스하지 못하도록 방화벽의 포트를 차단할 수 있습니다. – bmeding

답변

5

NanoHttpd는 하나의 소스 파일입니다 여기에 관련 클립 : 당신은 당신이 구성하여 원하는 효과를 얻을 수 있었던 것처럼

/** 
    * Constructs an HTTP server on given hostname andport. 
    */ 
    public NanoHTTPD(String hostname, int port) { 
     this.hostname = hostname; 
     this.myPort = port; 
     setTempFileManagerFactory(new DefaultTempFileManagerFactory()); 
     setAsyncRunner(new DefaultAsyncRunner()); 
    } 

    /** 
    * Start the server. 
    * @throws IOException if the socket is in use. 
    */ 
    public void start() throws IOException { 
     myServerSocket = new ServerSocket(); 
     myServerSocket.bind((hostname != null) ? new InetSocketAddress(hostname, myPort) : new InetSocketAddress(myPort)); 

나는 여기에서 그것을 시도 할 수있는 위치에 아니에요하지만, 보이는 당신의 서버가 new NanoHTTPD("localhost",8080) 인 경우 - 바인드 작업이 localhost의 포트에 바인드됩니다 (와일드 카드 바인드를 사용하는 대신)

+1

'새로운 NanoHTTPD ("localhost", 8080)'완벽하게 작동했습니다. – whiskeyspider

+1

'NanoHTTPD (int port)'와 같은 호스트 이름 ***을 *** 전달하면 원격 액세스를 허용하는 모든 인터페이스에 바인드됩니다. –

관련 문제