tcp流量转发到不同的后端

jiangyd · · 2441 次点击
请问如果实现轮询发送的话应该怎么做呢?就是第一次发给服务器A,接收它的返回;第二次发给服务器B,接收它的返回,以此类推,基于您的基础上改了改发现有问题 ```go func (p *pipeline) serve() { defer p.close() //master := p.backs[0] //go p.readFrom(master) // //discards := p.backs[1:] //if len(discards) != 0 { // go p.discard(discards) //} buf := make([]byte, 1024) bufRead := make([]byte, 1024) index := 0 for { n, err := p.conn.Read(buf) if err != nil { return } if _, err := p.backs[index].Write(buf[:n]); err != nil { break } fmt.Println("index: ", index) n, err = p.backs[index].Read(bufRead) if err != nil { break } if _, err = p.conn.Write(bufRead[:n]); err != nil { break } index = (index + 1) % len(p.backs) } } ```
#11
更多评论
某个协程io.Copy之后相当于读完了流,另外的协程当然读不到数据了,你需要修改代码,每次读取[]byte,然后再每个连接Write([]byte)
#1
代码如何写啊,不用io.copy了吗
#2