【问题标题】:Python wrapper for UDT C++ libraryUDT C++ 库的 Python 包装器
【发布时间】:2011-11-05 13:49:13
【问题描述】:

我想在 Python 中使用UDT library,所以我需要一个包装器。我找到了这个:pyudt,但我不知道如何使用它从点对点发送文件。谁能指出我正确的方向?

【问题讨论】:

    标签: python wrapper boost-python udp-data-transfer


    【解决方案1】:

    你可以试试我的udt_py fork。它现在包含一个示例recvfile.py,并且可以从udt 的app 目录中的sendfile 守护进程中检索文件。

    【讨论】:

      【解决方案2】:

      经过这么长时间我找到了这个问题及其解决方案:

      pyudt-0.1a的安装步骤为:

      • 安装: libboost-python1.46-dev 或同等产品 (例如,在 linux-ubuntu12.04 中,它位于代表中。)

      • 将udt.h(来自:http://sourceforge.net/projects/udt/)安装到系统目录中,


      (把udt.h文件和pyudt-0.1a文件放在同一个路径下,然后改一行“pyudt.cpp”,来自:

      #include <udt.h>
      

      到:

      #include "udt.h"
      

      )。

      • 将“setup.py”中 boost_python 库的版本更新为您的版本 使用,

      例如:

          ... libraries=['udt', 'boost_python-py27'])
      
      • 更改“pyudt.cpp”中的以下行:

      必须纠正一个错误,从:

      int r = UDT::send(_sock, data.c_str(), data.length(), 0);
      

      到:

      int r = UDT::send(_sock, data.c_str(), data.length()+1, 0);
      

      因为字符“\0”表示字符串的结尾也必须发送,否则垃圾会附加到您的字符串中。

      您可以选择:

         _sock = UDT::socket(AF_INET, SOCK_DGRAM, 0);   --» default
      

      或:

         _sock = UDT::socket(AF_INET, SOCK_STREAM, 0);  --» optional
      
      • 最后,运行,

      在相应的文件夹中:

      python2.7 ./setup.py build
      sudo python2.7 ./setup.py install
      

      或者,(如果您没有管理员权限为所有用户安装它,只是想为您尝试一下:

      python2.7 ./setup.py build
      python2.7 ./setup.py install --prefix=~/pyudt-0.1a/installation_dir/  #in this case, pyudt would only work if called from that directory
      

      )

      那么,一个简单客户端的代码可以是:

      import pyudt
      socket = pyudt.pyudt_socket()
      socket.connect(("127.0.0.1", 7000))
      socket.send("hello_world!")
      

      它工作正常,它与我的 cpp 服务器对话!

      注意:如果您需要更多帮助,可以在 python 的控制台中编写:

      import pyudt
      dir(pyudt.pyudt_socket) # to list the available functions
      help(pyudt)             # to get more help
      

      PS。使用本安装教程创建的文件是: /usr/local/lib/python2.7/dist-packages/pyudt.so 和 /usr/local/lib/python2.7/dist-packages/pyudt-0.1a.egg-info

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-02-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-25
        • 2016-09-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多