Можно ли ограничить NanoHttpd только локальным хостом?

Я запускаю NanoHttpd на 8080 на моем локальном рабочем столе. Я могу получить доступ к серверу локально в моем браузере по адресу http://localhost:8080/, Эта часть работает, как ожидалось.

Однако я не хочу, чтобы мой сосед (или, что еще хуже, мир) также мог получить к нему доступ в http://my.local.ip.add:8080/,

Как я могу ограничить его только локальным доступом, чтобы я был единственным, кто может видеть, как эти страницы обслуживаются моим локально работающим экземпляром NanoHttpd?

1 ответ

Решение

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) - поскольку это приведет к привязке операции привязки к порту на локальном хосте (вместо использования подстановочного знака)

Другие вопросы по тегам