[英]Python wrapper for UDT C++ library
经过这么多次,我发现了这个问题及其解决方案:
安装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"
)。
例如。:
... 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 -信息
你可以尝试一下我的udt_py fork 。 它现在包含一个示例recvfile.py
,可以从udt的app
目录中的sendfile
守护进程中检索文件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.