tcp流量转发到不同的后端

jiangyd · · 2464 次点击
是这样的场景,我们公司有模拟别家公司服务端的一个功能,客户端用的是人家的,接收到数据后,做解析,为了解析效果一致, 需要把客户端上报的数据,同时发给我司的服务端与别家公司的服务端,做比较找出差异。 ``` defer conn.Close() p := make([]byte, 0, 124) for { if len(p) == cap(p) { p = append(p, 0)[:len(p)] } n, err := conn.Read(p[len(p):cap(p)]) p = p[:len(p)+n] if n < 124 && err == nil { break } else if err != nil && err == io.EOF { break } else { continue } } for _, dst_conn := range tcp_conn { t := bytes.NewReader(p) go io.Copy(dst_conn, t) } io.Copy(conn, tcp_conn[0]) ``` 我这样写,目前有个问题,第一次客户端发送数据,服务端都能收到,但是第二次发送 ,客户端就一致sending ,不知道是哪里阻塞了
#7
更多评论
某个协程io.Copy之后相当于读完了流,另外的协程当然读不到数据了,你需要修改代码,每次读取[]byte,然后再每个连接Write([]byte)
#1
代码如何写啊,不用io.copy了吗
#2