Go Net包的一些使用

Golang net包最近在项目日志报警中,经常看到"broken pipe"这个报错,经过询问负责基础架构的同事,是server正在处理的时候client主动关闭TCP连接导致的,可以忽略;于是我们的做法是,将这个报警项添加进了白名单。但本着刨根问底的心态,我自己按照网上的文章也尝试本地复现了一下这个报错。1 ConnConn是一个基本的接口类型,以数据流为向导的网络连接接。注意是接口类型,不需要我们来手动构造实现Conn接口,生成满足Conn接口的函数。func Dial(network,
摘要由CSDN通过智能技术生成

Golang net包

最近在项目日志报警中,经常看到"broken pipe"这个报错,经过询问负责基础架构的同事,是server正在处理的时候client主动关闭TCP连接导致的,可以忽略;于是我们的做法是,将这个报警项添加进了白名单。但本着刨根问底的心态,我自己按照网上的文章也尝试本地复现了一下这个报错。

1 Conn

Conn是一个基本的接口类型,以数据流为向导的网络连接接。注意是接口类型,不需要我们来手动构造实现Conn接口,生成满足Conn接口的函数。

func Dial(network, address string) (Conn, error) // 用来建立TCP连接
func DialTimeout(network, address string, timeout time.Duration) (Conn, error)
func FileConn(f *os.File) (c Conn, err error)
func Pipe() (Conn, Conn)

服务端通过Accept()方法来接受Listen到的一个TCP连接;

客户端通过Dial()方法来请求建立一个TCP连接。

在连接建立完成后,由于TCP是全双工通信的,所以两端都可以使用conn.Read() conn.Write()函数来读取内容到buffer中。

2 测试TCP建立连接和通信的过程

为了方便观察,把Server做成只会读,Client只会写。

服务端代码
func recvConnectionMsg(connection net.Conn) {
   
	buffer := make([]byte, 50)
	defer connection.Close()</
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值