1. 首页
  2. 游戏开发
  3. Unity3D
  4. 利用Golang实现TCP连接的双向拷贝详解

利用Golang实现TCP连接的双向拷贝详解

上传者: 2020-12-06 15:07:36上传 PDF文件 70.11KB 热度 26次

任何一方断开连接,双向都断开连接。一个值得注意的地方是io.Copy的默认buffer比较大,给一个小的buffer可以支持更多的并发连接。这两个goroutine并序在一个退出之后,另外一个也退出。这个的实现是通过关闭server或者client的socket来实现的。一个显而易见的问题是,每次Server的连接进来之后都需要临时去建立一个新的Client的端的连接。这样在代理的总耗时里就包括了一个tcp连接的握手时间。如果能够让Client端实现连接池复用已有连接的话,可以缩短端到端的延迟。因为连接在归还到池里的时候并不能保证是还保持连接的状态。另外一个更严重的问题是,因为client的连接不再被关闭了,当server端关闭连接时,从client向server做io.CopyBuffer的goroutine就无法退出了。一个普遍的观点是Goroutine是无法被中断的。

下载地址
用户评论