我正在尝试使用python实现tcp代理,

因此,我需要直接连接两个套接字,并在两者之间传递输入和输出。

在golang中,我只做了io.Copy,Python 2.6中的等效功能是什么?

go func() {
    defer conn1.Close()
    defer conn2.Close()
    io.Copy(conn1, conn2)
}()

最佳答案

您可以使用如下功能:

def CopyProxy(conn1, conn2):
    while True:
        data = conn2.recv(BUFFER_SIZE)
        try:
            conn1.send(data)
            if not data:
              conn1.close()
              conn2.close()
              break
        except Exception:
              break

然后在单独的线程中启动它们:
# conn1 and conn2 - previously opened connections "to" and "from"
t1 = threading.Thread(target=CopyProxy, args=[conn1, conn2])
t2 = threading.Thread(target=CopyProxy, args=[conn2, conn1])
t1.start()
t2.start()

10-06 15:20