douwei8911 2017-01-08 06:53
浏览 77
已采纳

相当于io.Copy的Python

I'm trying to implement a tcp proxy with python,

So I need to connect two sockets directly, passing input and output in between.

In golang, I simply do a io.Copy, what's the equivalent in Python 2.6?

go func() {
    defer conn1.Close()
    defer conn2.Close()
    io.Copy(conn1, conn2)
}()
  • 写回答

1条回答 默认 最新

  • duanpendan8067 2017-01-08 08:35
    关注

    You may use function like this:

    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
    

    Then launch them in separate threads:

    # 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()
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥60 请查询全国几个煤炭大省近十年的煤炭铁路及公路的货物周转量
  • ¥15 请帮我看看我这道c语言题到底漏了哪种情况吧!
  • ¥66 如何制作支付宝扫码跳转到发红包界面
  • ¥15 pnpm 下载element-plus
  • ¥15 解决编写PyDracula时遇到的问题
  • ¥15 有没有人能解决下这个问题吗,本人不会编程
  • ¥15 plotBAPC画图出错
  • ¥30 关于#opencv#的问题:使用大疆无人机拍摄水稻田间图像,拼接成tif图片,用什么方法可以识别并框选出水稻作物行
  • ¥15 Python卡尔曼滤波融合
  • ¥20 iOS绕地区网络检测