1 回答

TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超9個(gè)贊
當(dāng)你這樣做
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
}
}()
您開(kāi)始處理第一個(gè) TCP 連接。此代碼塊在donorConns <- donorConn. 在此發(fā)送到通道完成之前,循環(huán)不會(huì)進(jìn)入第二次迭代(并且不會(huì)接受下一個(gè) TCP 連接)。
你做了一個(gè)非常相似的第二個(gè)循環(huán)
// 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完成(從第一個(gè)循環(huán)開(kāi)始)并且需要proxy.ProxifyConns(recipientConn, donorConn)完成。
我不確定你打算如何讓整個(gè)工作,但是,很可能,你需要一個(gè)很小的改變:
go proxy.ProxifyConns(recipientConn, donorConn)
- 1 回答
- 0 關(guān)注
- 162 瀏覽
添加回答
舉報(bào)