golang 可以监听多个端口吗

golang 可以监听多个端口吗,第1张

由于linux的socket监听机制和TCP协议,多个进程无法监听同一个端口,但是具体到nginx,可以多个nginx进程监听到不同端口,通过一个主进程端口做upstream来实现负慧卖载均衡,这个有点类似于网络的汇聚,可以设置不同的策略,比如iphash,urlhash或前做逗者RR。胡樱

c, _ := listerner.Accept()

go c.run()

func (c *conn) run() {

go c.onWrite()

c.onRead()

}

func (c *conn) onRead() {

stat.AddConnCount(1)

//on something

stat.AddConnCount(-1)

//clear

//notify onWrite to quit

}

TLDR 在使用 Golang 编写 TCP/UDP socket 的时候,第一步做的就是地址解析。

该函数返回的地址包含的信息如下:

TCPAddr 里, IP 既可以是 IPv4 地址,也可以是 IPv6 地址。 Port 就是端口了。 Zone 是 IPv6 本地地址所衡早在的区域。

从返回结果看该函数的参数, network 指 address 的网络类型; address 指要解析的地址,会从中解析出我们想要的 IP , Port 和 Zone 。

从源码中可以看出键拦巧稿键,参数 network 只能是如下四个值,否则会得到一个错误。

解析过程跟 ResolveTCPAddr 的一样,不过得到的是 *UDPAddr 。

UDPAddr 包含的信息如下:


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12341929.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存