Оболочка Python для библиотеки UDT C++
Я хочу использовать библиотеку UDT в Python, поэтому мне нужна оболочка. Я нашел это: Pyudt, но я не знаю точно, как использовать это для отправки файлов с однорангового узла. Кто-нибудь может указать мне правильное направление?
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"
).
- обновите версию библиотеки boost_python в "setup.py" до той, которую вы используете,
например.:
... 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!
notice: if you need more help you can write in the python's console:
import pyudt
dir(pyudt.pyudt_socket) # to list the available functions
help(pyudt) # to get more help
PS. the files created with this installation tutorial are: /usr/local/lib/python2.7/dist-packages/pyudt.so, and /usr/local/lib/python2.7/dist-packages/pyudt-0.1a.egg-info
Вы можете попробовать мою вилку udt_py. Включает в себя образец recvfile.py
теперь и может извлечь файлы из sendfile
Демон в Удте app
каталог.