web服务器搭建步骤(web服务器安装与配置教程)

小猪 592 0

Go语言标准库 - net/http

在学习Go语言有一个很好的起点,Go语言官方文档很详细,今天咱们学习的Go Web服务器的搭建就需要用到Go语言官方提供的标准库 net/。

web服务器搭建步骤(web服务器安装与配置教程)-第1张图片-小猪号

服务器

package main import (  "fmt"  "net/链接请求了。

web服务器搭建步骤(web服务器安装与配置教程)-第2张图片-小猪号

上图中,咱们在浏览网址软件中输入了 !

这个时侯如果咱们在浏览网址软件地址后面加一些参数试一试:,看看浏览网址软件中输出什么?服务器端输出的又是什么?

web服务器搭建步骤(web服务器安装与配置教程)-第3张图片-小猪号

浏览网址软件中输出图片

web服务器搭建步骤(web服务器安装与配置教程)-第4张图片-小猪号

服务器端输出图片

咱们看到了上面的代码,要编写一个Web服务器是不是很简单,只要调用http包的两个函数就可以了。

如果以前你是.NET程序员,那你也许就会问,咱们的IIS服务器不需要吗?Go就是不需要这些,因为他直接就监听了TCP端口了。

咱们看到Go通过简单的几行代码就已经运行起来一个Web服务了,而且这个Web服务内部有支持高并发的特性。现在Web服务已经搭建完成了,那咱们现在来知道一个这个服务是怎么运行起来的呢?

Web工作方式的几个概念

以下几个为服务器段的概念

Request:客户请求的信息,用来解析客户的请求信息,包括post、get、cookie、url等信息Response:服务器需要反馈给客户端的信息Conn:客户的每次请求链接Handler:处理请求和生成返回信息的处理逻辑分析http包运行机制

web服务器搭建步骤(web服务器安装与配置教程)-第5张图片-小猪号

Go实现Web服务的工作模式流程图

这个过程咱们需要清楚以下三个问题,则就清楚Go是如何让Web运行起来了

如何监听端口?通过上面的代码咱们看到Go是通过一个函数ListenAndServe来处理这些事情的,这个底层其实这样处

理的:初始化一个server对象,然后调用了net.Listen("tcp", addr),也就是底层用TCP要求搭建了一个服

务,然后监控咱们设置的端口。

Go 处理过程

func (srv *Server) Serve(l net.Listener) error {  defer l.Close()  var tempDelay time.Duration // how long to sleep on accept failure  for {  rw, e := l.Accept()  if e != nil {  if ne, ok := e.(net.Error); ok && ne.Temporary() {  if tempDelay == 0 {  tempDelay = 5 * time.Millisecond  } else {  tempDelay *= 2  }  if max := 1 * time.Second; tempDelay > max {  tempDelay = max  }  log.Printf("去服务,相互不影响。

如何分配handler?conn首先会解析request:c.readRequest(),然后获取相应的handler:handler := c.server.Handler,也就是咱们刚才在调用函数ListenAndServe时候的第二个参数,咱们前面例子传递的是nil,也就是为空,那么默认获取handler = DefaultServeMux,那么这个变量用来做什么的呢?对,这个变量就是一个wifi网络路由器,它用来匹配url跳转到其相应的handle函数,那么这个咱们有设置过吗?有,咱们调用的代码里面第一句不是调用了的信息反馈到客户端。

web服务器搭建步骤(web服务器安装与配置教程)-第6张图片-小猪号

一个http连接处理流程

至此咱们的三个问题已经全部得到知道答,你现在对于Go如何让Web跑起来的是否已经基本知道

知道更多技术内容,请关注微信公众账号:安徽思恒信息科技有限公司

微信ID:AHSHXXKJ

标签: 配置

抱歉,评论功能暂时关闭!