首页 > 其他分享 >golang net/http 的 ListenAndServe 的工作方式(取代 listen、accept)

golang net/http 的 ListenAndServe 的工作方式(取代 listen、accept)

时间:2024-06-04 20:24:09浏览次数:11  
标签:http Serve accept Server golang ListenAndServe net

 

 

在Go的 net/http 包中,当你使用 ListenAndServe 或 ListenAndServeTLS 函数启动一个HTTP服务器时,

你不需要直接调用 listen 和 accept 操作,因为这些函数已经为你处理了这些底层的网络细节。

 

ListenAndServe 函数的工作方式如下:

1. 它首先调用net.Listen来监听指定的网络地址(例如"localhost:8080")。

2. 然后,它开始一个无限循环,调用 http.Server 的 Serve 方法来处理传入的连接。

 

Serve方法内部包含了对 accept 操作的处理,它会接收来自 Listen 的新的客户端连接,并为每个连接创建一个新的 goroutine 来处理请求。

如果你想要更底层的控制,你可以创建自己的 http.Server 实例,手动调用 Listen,然后使用 Server.Serve 来处理连接,或者直接使用 Server.ServeTCP、Server.ServeUnix 等方法,这些方法内部都会处理accept操作。

tcp server 为什么需要 accept .

 

Link:https://www.cnblogs.com/farwish/p/18231631

标签:http,Serve,accept,Server,golang,ListenAndServe,net
From: https://www.cnblogs.com/farwish/p/18231631

相关文章

  • golang 的 net/http 和 net/rpc 的区别, rpc 效率比 http 高?
     在Go语言中,net/http和net/rpc是两个不同的包,它们分别用于实现不同的网络通信模式:net/http:net/http包主要用于构建Web服务和客户端,它实现了HTTP协议,这是互联网上最广泛使用的应用层协议之一,主要用于传输超文本(HTML)和其他资源。HTTP协议是基于请求-响应模型的,客......
  • 【信息化人员必备知识&面试宝典】HTTP协议的状态码:那些数字背后的秘密
    【信息化人员必备知识&面试宝典】HTTP协议的状态码:那些数字背后的秘密状态码的分类与基本概念核心状态码解读与实战案例一:200OK——一切安好案例二:404NotFound——迷失的页面案例三:301MovedPermanently——永久搬家案例四:500InternalServerError——服务......
  • golang 使用 zap logger 加入Lumberjack 写日志
    golang使用zaplogger加入Lumberjack写日志Cd进入项目目录gogetgo.uber.org/zap/zapcoregoget-ugithub.com/natefinch/lumberjack关于下面代码说明: funcgetLogWriter()zapcore.WriteSyncer{lumberJackLogger:=&lumberjack.Logger{Filename:......
  • 34、nginx-公网CA加密部署-网站https部署-阿里云
    1、购买阿里云服务器2、安装nginx、打开访问3、购买域名、域名解析、解析后可用域名去访问网站 4、购买ssl证书  5、这里我申请免费证书    验证通过后、提交审核即可这一步表示证书已买好了、点击下载 下载完将证书包拉到服务器上的/etc/nginx ......
  • 33、nginx-CA和https(http+ssl(安全套接字))私有CA--网站加密(443 ssl https)-加密密钥key
    算法:将原有的值通过一些算法来进行加密对称算法(加密和解密的过程用的钥匙是相同的):AES\DES\3DES非对称算法(加密和解密的过程中使用的钥匙是不一样的):DH\RSAhash算法:MD5=========================================SSL安全套接字===================================......
  • HTTP
    前端三剑客HTML骨架CSS衣服JAVASCRIPT动作BOOTSTRAP(HTML+CSS)前后端结合UI框架特点小而轻便容易上手*Vue框架axios工具JQuery(javascript)封装了一系列JS操作,可以大大简化js代码和操作方式封装了一个工具ajax浏览器请求步骤输入地址网址......
  • Golang(Go语言)封装一个简单的控制台输出包
    //定义6个常量,每个常量代表一个布尔值为true的位置const( LEVEL_DEBUG=1<<iota LEVEL_INFO LEVEL_WARN LEVEL_ERROR LEVEL_FATAL PRINT_SRC_FILE)typeconsoleFuncfunc(formatstring,a...any)varprintSrcFileEmptyFunc=func(){}typeConsolestruct{......
  • C++代码实现一个简易http服务端,返回给客户端一张图片
    注意事项sprintf读取字符串时,遇到\0会结束,所以不能用sprintf来读取*pictureBuffervoid*memcpy(void*str1,constvoid*str2,size_tn),str2会覆盖str1里的内容代码#include<func.h>charpictureBuffer[150*1024];charbuffer[200*1024];intmain(){in......
  • Spring Boot入坑-7-后端HTTP请求
    概述后端项目完成后,除了前后端分离模式的前端对后端请求的需要,如Vue通过Axios.js组件请求后端REST接口;不同后端系统中也需要进行相互的HTTP请求,实现各业务系统的业务交互;如订单服务,会调用支付服务、库存服务、积分服务等,如下图​后端HTTP请求图​JDK的java.net包中已经......
  • HTML动态响应2-Servlet+Ajax实现HTTP前后台交互方式
    作者:私语茶馆前言其他涉及到的参考章节:HTML动态响应1—Ajax动态处理服务端响应-CSDN博客Web应用JSON解析—FastJson1.2.83/Tomcat/IDEA解析案例-CSDN博客HTML拆分与共享方式——多HTML组合技术-CSDN博客1.场景:   WEb项目经常需要前后端交互数据,并动态修改HTML页面,......