Go_Http连接建立和处理
http 连接建立和处理 接收 http 请求并执行的过程 go func() { if err := s.ListenAndServe(); err != nil && err != http.ErrServerClosed { log.Fatalf("s.ListenAndServe err: %v", err) } }() 前面提到, 在路由引初始化完成后,注册对应的路由和 handler,接下来在 main 函数中 http.Server 就会监听指定的端口,我们来看下http.Server 是如何接收请求并执行对应的处理函数的 httpServer 会调用 Serve(l net.Listener 函数,这个函数主要做了以下几件事情 在一个循环里面不断监听套接字是否有链接请求上来,如果有的话,创建一个新的连接对象 这个连接对象中有,有两个成员,一个是套接字对象(实现了conn接口),一个是指向service对象的指针 最后一行,通过启动一个新的协程来处理连接事务,并对外提供服务 func (srv *Server) newConn(rwc net.Conn) *conn { c := &conn{ server: srv, rwc: rwc, } if debugServerConnections { c.rwc = newLoggingConn("server", c.rwc) } return c } func (srv *Server) Serve(l net....
Unix_System_Call
常用 Unix 函数总结 1. 文件操作 文件流操作 #include <stdio.h> 打开,关闭 FILE* fopen(const char* filename, const char* mode); int fclose(FILE* stream); 数据块读写,大小为 size * numb size_t fread(void *ptr, size_t size, size_t numb, FILE *stream); size_t fwrite(void *ptr, size_t size, size_t numb, FILE *stream); 格式化读,由format参数指定读的数据格式,由 ... 参数指定接收的容器 int fscanf(FILE *stream, const char *format, …); int fprintf(FILE *stream, const char *format, ...); int scanf(const char *format, …); int printf(const char *format, ...); //相当于fprintf(stdout,format,…); 从字符串中读取指定的格式 int sscanf(char *str, const char *format, …); int sprintf(char *str, const char *format, ....
Fist Blog
Hello World Hey guys, welcome to my world ! 🥳