gin之go的原生net/http

一、go自带net/http处理 http接口的应用

func main()  {
   // 注册路由
   http.HandleFunc("/", func(write http.ResponseWriter, request *http.Request) {
      _, _ = write.Write([]byte("Hello World!"))
   })
   // 服务监听
   if err := http.ListenAndServe(":8080", nil); err != nil{
      fmt.Println("start http server fail:", err)
   }
}

http.HandleFunc 实际就是将路由注册进 DefaultServeMux(默认多路复用器)

http.ListenAndServe 实际就是监听TCP网络地址addr,并调用serveer处理handler及返回响应

handler为nil时默认使用DefaultServeMux,addr为空时默认使用”:http"

srv.Serve(ln)

c.serve(connCtx)

整体过程

1、ln, err := net.Listen("tcp", addr) 初试化了socket, bind, listen

2、rw, e := l.Accept() 进行accept, 等待客户端进行连接

3、go c.serve(ctx) 启动新goroutine来处理本次请求. 同时主goroutine继续等待客户端连接, 进行高并发操作

4、h, _ := mux.Handler(r) 获取注册的路由, 拿到这个路由的handler, 然后将处理结果返回给客户端

 

二、net/http是如何建立socket的

1、http(应用层)是基于TCP协议(传输层)实现的,TCP协议是可靠的传输协议通过三次握手和四次挥手来进行连接和断开。

2、服务器 需进行 bind,listen,accept 三个阶段来建立链接。

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值