UDT c++库的Python包装器



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

经过这么多时间,我找到了这个问题和它的解决方案:

安装pyudt-0.1a的步骤如下:

  • 安装:Libboost-python1.46-dev或同等版本(例如,在linux-ubuntu12.04中,它在代表中。)

  • 安装udt.h (from: 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);

因为字符""意味着字符串的结束也必须发送,否则垃圾将被附加到您的字符串。

可选,你可以选择:

   _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

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

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

相关内容

  • 没有找到相关文章

最新更新