我想在Python中使用UDT library,所以我需要一个包装器。我找到了一个:pyudt,但我不知道该如何使用它来将文件从一个对等发送到另一个对等。有人能指出我正确的方向吗?
最佳答案
经过这么多时间,我发现了这个问题及其解决方案:
安装pyudt-0.1a的步骤是:
libboost-python1.46-dev或等效的
(例如,在linux-ubuntu12.04中,它在代表中。)
或者
(将udt.h文件放在与pyudt-0.1a文件相同的路径中,然后从以下位置更改“pyudt.cpp”行:
#include <udt.h>
至:
#include "udt.h"
)。
使用
例如。:
... libraries=['udt', 'boost_python-py27'])
您必须更正了一个错误,更改自:
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
关于适用于UDT C++库的Python包装器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7222852/