1 回答

TA贡献1831条经验 获得超9个赞
当你这样做
go func() {
for {
donorConn, err := listenerDonors.AcceptTCP()
donorConn.SetKeepAlive(true)
if err != nil {
utils.StacktraceErrorAndExit(err)
return
}
log.Println("New donor connection from", Conn(donorConn))
donorConns <- donorConn
}
}()
您开始处理第一个 TCP 连接。此代码块在donorConns <- donorConn. 在此发送到通道完成之前,循环不会进入第二次迭代(并且不会接受下一个 TCP 连接)。
你做了一个非常相似的第二个循环
// Handle recipient connections
for {
recipientConn, err := listenerRecipients.AcceptTCP()
recipientConn.SetKeepAlive(true)
if err != nil {
utils.StacktraceErrorAndExit(err)
return
}
log.Println("New recipient connection from", Conn(recipientConn))
donorConn := <-donorConns
proxy.ProxifyConns(recipientConn, donorConn)
}
这需要donorConn := <-donorConns完成(从第一个循环开始)并且需要proxy.ProxifyConns(recipientConn, donorConn)完成。
我不确定你打算如何让整个工作,但是,很可能,你需要一个很小的改变:
go proxy.ProxifyConns(recipientConn, donorConn)
- 1 回答
- 0 关注
- 191 浏览
添加回答
举报