34. 一个简单的 web 服务器实现

go 语言实现 web 服务器很容易。这样就可以很任意的建立 web 应用而互不干扰。当然,端口和IP要规划好。不过这里不讨论这个范畴的内容。我们只实现最基本的通过浏览器能够打印出我们想要的文字就可以了。
我们需要实现 http.Handler 。

func sayhello_cofox(w http.ResponseWriter, r *http.Request) 

然后用 http.HandleFunc 设置访问的路由
使用 http.ListenAndServe 设置主域名和端口号

err := http.ListenAndServe(":4000", nil)

这个例子中,我们使用 4000 端口。主域名省略。这样所有本机 IP 和域名就都可以使用。
比如:

http://192.168.1.105:4000/
http://127.0.0.1:4000/
http://localhost:4000/

完整代码

package main
import(
    "net/http"
    "fmt"
    "log"
    "time"
    "strings"
)

func sayhello_cofox(w http.ResponseWriter, r *http.Request)  {
    r.ParseForm()   //解析参数,默认是不会解析的
    fmt.Println(r.Form)
    fmt.Println("path", r.URL.Path)
    fmt.Println("scheme", r.URL.Scheme)
    fmt.Println(r.Form["url_long"])
    for k, v := range r.Form{
        fmt.Println("Key:", k)
        fmt.Println("Val:", strings.Join(v, ""))
    }
    fmt.Fprintf(w, "Hello Cofox!" + time.Now().String())
}
func main() {
    http.HandleFunc("/", sayhello_cofox)    //设置访问的路由
    err := http.ListenAndServe(":4000", nil)
    if err != nil {
        log.Fatal("ListenAndServe:", err)
    }
}

本例子编译后运行。然后打开浏览器,输入本地相应地址访问。
我实验的机器是这三个本地地址都可以访问

http://192.168.1.105:4000/
http://127.0.0.1:4000/
http://localhost:4000/

浏览器运行结果

Hello Cofox!2017-08-20 19:03:52.0956481 +0800 CST
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 非常好的文章,怕博主删除,再也找不到这么好的文章了,所以复制了一份,博主是2016年写,但是是到现在为止看到的,思...
    吭声_cfdc阅读 5,940评论 0 4
  • 先讨论许多应用协议都要使用的域名系统。在介绍了文件传送协议和远程登录协议后,就重点介绍万维网的工作原理及其主要协议...
    dmmy大印阅读 4,903评论 0 1
  • 本文整理自MIN飞翔博客 [1] 1. 概念 协议是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或...
    HoyaWhite阅读 7,581评论 2 20
  • 深入浅出HTTP协议(WEB开发和面试必备) 1.基础概念篇 a.简介 HTTP是Hyper Text Trans...
    半世韶华忆阑珊阅读 4,969评论 0 7
  • 当我们在浏览器的地址栏输入 www.linux178.com ,然后回车,回车这一瞬间到看到页面到底发生了什么呢?...
    Ddaidai阅读 4,948评论 0 12