Python等价于'io.Copy'`

Python等价于'io.Copy'`,python,sockets,go,proxy,Python,Sockets,Go,Proxy,我试图用python实现一个tcp代理 所以我需要直接连接两个插座,在它们之间传递输入和输出 在golang中,我只需执行一个io.Copy,在Python2.6中的等价物是什么 go func() { defer conn1.Close() defer conn2.Close() io.Copy(conn1, conn2) }() 您可以使用如下函数: def CopyProxy(conn1, conn2): while True:

我试图用python实现一个tcp代理

所以我需要直接连接两个插座,在它们之间传递输入和输出

在golang中,我只需执行一个
io.Copy
,在Python2.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()

shutil.copyfileobj
with
socket.socket.makefile
@NizamMohamed你能提供一个例子吗?@NizamMohamed对我不起作用,
shutil.copyfileobj(sock1.makefile(),sock2.makefile())
澄清什么是“tcp代理”以及它在哪里适用。在TCP中,一端启动连接(客户端),另一端接收(服务器)。你说的是哪一头?