我正在尝试使用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()