2016-07-19 1 views
0

Теперь у меня есть следующий код, извлеченный из книги.Создание простого FileServer с Go и Localhost Отказано от подключения

package main 

import (
    "net/http" 
) 

func main() { 
    h := http.FileServer(http.Dir(".")) 
    http.ListenAndServeTLS(":8001", "rui.crt", "rui.key", h) 
} 

Я ожидаю, что он может перечислить все файлы в папке main.go, но когда я просматриваю к:
https://localhost:8001
Я могу только видеть:

This site can’t be reached. 
localhost refused to connect. 

я использую LiteIDE построить и запустить программа. После того, как нажата кнопка BuildAndRun, отображаются следующие сообщения.

F:/Go/bin/go.exe build -i [E:/Users/User/Desktop/codespace_v2.6.6/dev/server_side/golang/go_codespace_v2.1/server] 
Success: process exited with code 0. 
E:/Users/User/Desktop/codespace_v2.6.6/dev/server_side/golang/go_codespace_v2.1/server/server.exe [E:/Users/User/Desktop/codespace_v2.6.6/dev/server_side/golang/go_codespace_v2.1/server] 
Success: process exited with code 0. 

Почему и как я могу это исправить?

+3

первый, проверьте ошибку от ListenAndServeTLS, а затем попробуйте использовать один и тот же IP-адрес в сервере и клиенте. – JimB

+0

Как проверить ошибку из 'ListenAndServeTLS'? Сообщения в консоли Lideide не отображаются. – Casper

+2

Нет ошибки, потому что вы не проверяете наличие ошибки. На выходе отображается процесс выхода сервера, что означает, что он ничего не обслуживает. Вы проверяете ошибку ListenAndServeTLS как любую другую ошибку или просто распечатываете ее независимо от чего-то вроде 'log.Fatal (http.ListenAndServeTLS (...' – JimB

ответ

1

Ваша система не может найти файл сертификата.:
Эта ошибка означает, что вам нужен файл «rui.crt» вместе с вашим основным двоичным файлом.
, если у вас нет сертификата смотрите: How to create a self-signed certificate with openssl?

затем копировать «server.pem», «server.key» файлы в двоичном (.exe) каталог файлов

и запустить этот пример кода (для теста):

package main 

import (
    "fmt" 
    "log" 
    "net/http" 
) 

type server struct { 
} 

func (s server) ServeHTTP(w http.ResponseWriter, r *http.Request) { 
    fmt.Fprint(w, "*Hello World\n*") 
} 

func main() { 
    if err := http.ListenAndServeTLS(":443", "server.pem", "server.key", server{}); err != nil { 
     log.Fatal(err) 
    } 
} 

затем открыть веб-страницу: https://127.0.0.1/
если брандмауэр poped вверх сказать да,
если вы видите There is a problem with this website’s security certificate. сказать продолжить (аванс).

выход:

*Hello World 
*