Оболочка Python для библиотеки UDT C++

Я хочу использовать библиотеку UDT в Python, поэтому мне нужна оболочка. Я нашел это: pyudt, но я точно не знаю, как использовать его для отправки файлы от однорангового узла к одноранговому. Может ли кто-нибудь указать мне в правильном направлении?


person malamili    schedule 28.08.2011    source источник


Ответы (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>

to:

#include "udt.h"

).

  • обновите версию библиотеки boost_python в «setup.py» до той, которую вы используете,

eg.:

    ... libraries=['udt', 'boost_python-py27'])
  • измените следующие строки в "pyudt.cpp":

вы должны исправить ошибку, заменив:

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

to:

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

потому что символ "\0", означающий конец строки, также должен быть отправлен, иначе к вашей строке будет добавлен мусор.

опционально вы можете выбрать между:

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

or:

   _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 -Информация

person sissi_luaty    schedule 16.09.2013

Вы можете попробовать мой форк udt_py. Теперь он включает образец recvfile.py и может извлекать файлы из демона sendfile в каталоге app udt.

person lilydjwg    schedule 08.09.2012