golang的net包

https://learnku.com/docs/the-way-to-go/151-tcp-server/3703
https://www.bilibili.com/video/BV1JP4y1s7rS

net包介绍

  1. net包的底层实现依赖于操作系统的网络API。
  2. net包提供了跨平台的网络编程接口,使得开发者可以在不同的操作系统上进行网络编程而无需担心底层实现的差异。
  3. 虽然net包本身不提供直接的网络安全和加密功能,但可以与Go语言的crypto/tls等包结合使用来实现安全的网络通信。
  4. net包也提供了与goroutine等并发机制相结合的网络编程接口。

tcp

go 复制代码
func ResolveTCPAddr(net, addr string) (*TCPAddr, error)  // addr作为TCP地址解析并返回
func ListenTCP(net string, laddr *TCPAddr) (*TCPListener, error)  // 在TCPAddr上监听,返回tcp网络监听者。Listener更通用,可监听所有类型的网络连接。
func (l *TCPListener) AcceptTCP() (*TCPConn, error)  // 接收呼叫,返回连接
func DialTCP(net string, laddr, raddr *TCPAddr) (*TCPConn, error)  // 拨号连接,nil为nil则是本地地址,不是nil则指定一个地址作为本地地址。
func (c *TCPConn) Read(b []byte) (int, error)  // 从连接读数据
func (c *TCPConn) Write(b []byte) (int, error)  // 向连接写数据

http

  1. 和http有关的在net/http包中,是net中最常用的
go 复制代码
func Handle(pattern string, handler Handler)  // 接收一个实现了http.Handler接口的结构体
func HandleFunc(pattern string, handler func(ResponseWriter, *Request))  // Handle的便捷版本,可以直接接收一个函数
// Handle和HandleFunc实际上是在操作默认的ServeMux实例。

func NewServeMux() *ServeMux  // ServeMux是一个结构体,它是HTTP请求的多路转接器。
// 可以选择以下两种方式之一来设置路由:
// 使用 http.Handle 或 http.HandleFunc 来注册路径到默认的 ServeMux。
// 创建一个新的 ServeMux 实例,使用它的 Handle 或 HandleFunc 方法来注册路径,然后在启动服务器时将这个 ServeMux 实例作为处理器传递给 http.ListenAndServe(虽然这种方式不太常见,但在某些需要自定义路由逻辑的场景下可能会用到)。

func ListenAndServe(addr string, handler Handler) error  // 监听TCP地址addr,并且会使用handler参数调用Serve函数处理接收到的连接

rpc

ip

  1. net包支持IP层协议的操作,包括IP地址的处理、ICMP协议的实现等。

Unix Domain Socket

  1. 这是一种进程间通信的协议,可以在同一台机器上的不同进程间进行高效的通信。
  2. Unix域socket的通信流程不经过网络层、数据链路层、物理层,而是直接在内核缓冲区之间进行数据拷贝。这种方式避免了网络传输中的打包拆包、计算校验和、维护序号和应答等复杂过程,因此具有更高的效率。
相关推荐
测试员周周4 小时前
【Appium 系列】第16节-WebView-H5上下文切换 — 混合应用的自动化难点
运维·开发语言·人工智能·功能测试·appium·自动化·测试用例
杜子不疼.6 小时前
【C++ AI 大模型接入 SDK】 - DeepSeek 模型接入(上)
开发语言·c++·chatgpt
加号36 小时前
【C#】 串口通信技术深度解析及实现
开发语言·c#
sycmancia7 小时前
Qt——编辑交互功能的实现
开发语言·qt
石山代码7 小时前
C++ 内存分区 堆区
java·开发语言·c++
无风听海7 小时前
C# 隐式转换深度解析
java·开发语言·c#
一只大袋鼠8 小时前
Git 进阶(二):分支管理、暂存栈、远程仓库与多人协作
java·开发语言·git
LuminousCPP9 小时前
数据结构 - 线性表第四篇:C 语言通讯录优化升级全记录(踩坑 + 思考)
c语言·开发语言·数据结构·经验分享·笔记·学习
web3.08889999 小时前
1688 图搜接口(item_search_img / 拍立淘) 接入方法
开发语言·python
один but you10 小时前
从可变参数到 emplace:现代 C++ 性能优化的核心组合
java·开发语言