【net/http】Go 语言中的 net/http 提供了 HTTP 客户端和服务端的实现

认识 http.Server 和 ListenAndServe

1. http.Server

type Server struct {
    Addr    string
    Handler Handler
    TLSConfig *tls.Config
    ReadTimeout time.Duration
    ReadHeaderTimeout time.Duration
    WriteTimeout time.Duration
    IdleTimeout time.Duration
    MaxHeaderBytes int
    ConnState func(net.Conn, ConnState)
    ErrorLog *log.Logger
}

Addr:监听的 TCP 地址,格式为 :8000

Handler:http 句柄,实质为 ServeHTTP,用于处理程序响应 HTTP 请求

TLSConfig:安全传输层协议(TLS)的配置

ReadTimeout:允许读取的最大时间

ReadHeaderTimeout:允许读取请求头的最大时间

WriteTimeout:允许写入的最大时间

IdleTimeout:等待的最大时间

MaxHeaderBytes:请求头的最大字节数

ConnState:指定一个可选的回调函数,当客户端连接发生变化时调用

ErrorLog:指定一个可选的日志记录器,用于接收程序的意外行为和底层系统错误;如果未设置或为nil则默认以日志包的标准日志记录器完成(也就是在控制台输出)

2. ListenAndServe

func (srv *Server) ListenAndServe() error {
    addr := srv.Addr
    if addr == "" {
        addr = ":http"
    }
    ln, err := net.Listen("tcp", addr)
    if err != nil {
        return err
    }
    return srv.Serve(tcpKeepAliveListener{ln.(*net.TCPListener)})
}

开始监听服务,监听 TCP 网络地址,Addr 和调用应用程序处理连接上的请求。

我们在源码中看到Addr是调用我们在 &http.Server 中设置的参数,因此我们在设置时要用 & ,我们要改变参数的值,因为我们 ListenAndServe 和其他一些方法需要用到 &http.Server 中的参数,他们是相互影响的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值