go开发一个php服务器,跟我一起学习GO语言011——Go语言搭建一个Web服务器

上一节我们介绍了搭建一个Web服务器需要了解的基础知识,本节我们来看看怎么用Go语言搭建一个Web服务器,Go语言中提供了一个完善的net/http包,通过http包可以很方便地搭建一个可以运行的Web服务。

我们还是以代码方式展示:

package main

import(

“fmt”

“net/http”

“strings”

“log”

)

func sayhelloName(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:”,string.Join(v,””))

}

fmt.Fprintf(w,”Hello astaxie!”)//这个写入到w的时输出到客户端的

}

func main(){

http.HandleFunc(“/”,sayhelloName)//设置访问的路由

err:=http.ListenAndServer(“:9090”,nil)//设置监听的端口

if err!=nil{

log.Fatal(“ListtenAndServer:”,err)

}

}

我们build之后,然后执行web.exe,这个时候其实已经在9090端口监听tcp链接请求了。在浏览器输入http://localhost:9090,浏览器页面输出:Hello astaxie!.通过上面代码展示及输出,我们可以知道,要编写一个Web服务器很简单,只要调用http包的两个函数就可以了。

下面我们来Go语言如何使Web工作的呢?

Web工作方式的几个概念:

Request:用户请求的信息,用来解析用户的请求信息,包括post、get、Cookie、url。

Response:服务器需要反馈给客户端的信息。

Conn:用户的每次请求链接。

Handler:处理请求和生成返回信息的处理逻辑。

分析http包的运行机制:

创建Listen Socket,监听指定的端口,等待客户端请求到来。

2. Listen Socket接收客户端的请求,得到Client Socket,接下来通过Client Socket与客户端通信。

3. 处理客户端请求,首先从Client Socket 读取HTTP请求的协议头,如果是POST方法,还可能要读取客户端提交的数据,然后交给相应的handler处理请求,handler处理完毕准备好客户端需要的数据,通过Client Socket写给客户端。

54b244256d8eb9b84578f2f036098f3e.png

整个过程中,我们需要了解清楚三个问题,如何监听端口、如何接收客户端请求、如何分配handler,这样也就知道Go语言是如何让Web运行起来的。

以上只是简单的包执行流程,如果你要了解http连接处理流程,你看看下图:然后可以深入了解里面的运行机制。

59c8b87004b012023ce90ff019820e80.png

请开始你的表演,践行,践行,再践行。未完待续。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值