2016-11-19 8 views
-2

Я использую платформу iris для программирования на языке перевода (я очень начинаю). Я хочу, чтобы все мои компьютеры дома были доступны для доступа к серверу go, который также является локальной машиной. Когда я устанавливаю прослушиватель с IP-адресом сети (192.168.0.0) или с любым указанным IP (192.168.0.15), он возвращает мне паническую ошибку. Доступно только 0.0.0.0 или 127.0.0.1/localhost или 192.168.0.19 - то есть такой же, как локальный хостКак установить прослушиватель сервера golang, доступный только для моей локальной сети

import "net" 

... 

ln, err := net.Listen("tcp4", "192.168.12:9999") 
    if err != nil{ 
     panic(err) 
    } 

    iris.Serve(ln) 

... 

Ошибки: паники: слушать tcp4 192.168.0.12:9999: BIND: Запрошенный адрес не является действительный в его контексте.

Спасибо всем за помощь.

+7

Я уверен, вы должны немного узнать, как работают сети, прежде чем начинать писать серверы. Вы не можете привязать прослушиватель к IP, который не назначен серверу. –

+0

Да, я не очень хорошо разбираюсь в сети. Но также я не пишу сервер, я имею в виду, но это не цель. Мне нужно создать приложение на языке go, которое будет обслуживать запросы. Чтобы установить слушателя, вам нужно просто поместить строку iris.Listen («: 9898») в конец основного метода. Он будет обслуживать глобальный сервис (0.0.0.0:9898). Я просто хочу узнать, есть ли способ ограничить внешний доступ? Или может быть, нет доступа из-за пределов локальной сети? –

+0

Forst Я согласен с @RomanR. Во-вторых, если вы используете WiFi и запускаете свой сервер go на своем локальном хосте (как и предполагаете), вы можете получить доступ к веб-серверу с любого устройства, подключенного к тому же WiFi, посетив локальный хост с этой машины. – reticentroot

ответ

2

Вы должны прочитать о том, как работают сети, но вот некоторые моменты, которые помогут вам начать работу.

Вы слушаете порт, а не IP-адрес. Так что все, что машина, которую вы будете использовать как сервер, найти ваш локальный IP-адрес:

В Linux или Mac вы можете сделать это несколькими способами:

ifconfig | grep netmask и получить локальный адрес, например. 192.168.x.xx

Затем запустить сервер с вашей программой Go и слушать на локальный порт, как 8080.

например.

if err := http.ListenAndServe(":8080", nil); err != nil { 
    //handle error 
} 

Тогда вы можете получить доступ к серверу с другими машинами в своем доме, если они находятся на одном и том же Wi-Fi. Используйте другой компьютер и зайдите в браузер 192.168.x.xx:8080.

Чтобы ответить на ваш вопрос в ваших комментариях, аутсайдеры не могут получить доступ к вашему локальному серверу, если у них нет подключения к вашему Wi-Fi.