tcp 连接双向拷贝 无效的tcp连接不能被识别关闭

wanghaichaoAAA · · 873 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

``` func (client *ForwardInfo) StartOneForward(tcpConn net.Conn) { defer tcpConn.Close() //连接目标地址1 conn1, err := net.DialTimeout("tcp", client.Dest1, 30*time.Second) //连接目标地址2 conn2, err := net.DialTimeout("tcp", client.Dest2, 30*time.Second) if err != nil { public.ForwardLog.Error("转发出现异常 Forward to Dest Addr err:", err.Error()) return } defer func() { conn1.Close() conn2.Close() }() public.ForwardLog.Info("新用户 ", tcpConn.RemoteAddr().String(), "开始TCP转发 --> ", client.Dest1, ",", client.Dest2) conns := ClientConn{ Uuid: uuid.New(), SrcConn: tcpConn, Dest1Conn: conn1, Dest2Conn: conn2, } client.ClientInfoMap.Set(conns.Uuid, &conns) go func() { multiReader := io.MultiReader(conns.Dest1Conn, conns.Dest2Conn) _, err := io.Copy(conns.SrcConn, multiReader) if err != nil { conns.StopForward(client) //关闭连接 } }() writer := io.MultiWriter(conns.Dest1Conn, conns.Dest2Conn) _, err = io.Copy(writer, conns.SrcConn) if err != nil { conns.StopForward(client) //关闭连接 } } ``` 我正在用io.cpoy对进入的tcp连接复制到2条新连接上,发现有些tcp连接被关闭了,可是无法调用StopForward方法进行tcp关闭

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

873 次点击  
加入收藏 微博
1 回复  |  直到 2021-01-17 17:50:36
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传