Desidero utilizzare lo UDT library in Python, quindi ho bisogno di un wrapper. Ho trovato questo: pyudt, ma non so esattamente come usarlo per inviare file da un peer a peer. Qualcuno può indicarmi la giusta direzione?wrapper Python per libreria UDT C++
risposta
Puoi provare il mio udt_py fork. Include ora un campione recvfile.py
e può recuperare i file dal demone sendfile
nella directory app
di udt.
dopo tante volta ho trovato questa domanda e la sua soluzione:
la procedura per installare pyudt-0.1A sono:
installare: libboost-python1.46-dev o equivalente (per esempio, in linux-ubuntu12.04 è nelle ripetizioni.)
installare udt.h (da: http://sourceforge.net/projects/udt/) in una directory di sistema,
O
(mettere il file udt.h nello stesso percorso dei file pyudt-0.1A, e quindi modificare una linea del "pyudt.cpp", da:
#include <udt.h>
a :
#include "udt.h"
).
- aggiornamento la versione della libreria boost_python, in "setup.py" per quello che sei utilizzando,
ad es .:
... libraries=['udt', 'boost_python-py27'])
- modificare la riga seguente (s) in "pyudt.cpp":
si must correggere un bug, si passa da:
int r = UDT::send(_sock, data.c_str(), data.length(), 0);
a:
int r = UDT::send(_sock, data.c_str(), data.length()+1, 0);
perché il carattere "\ 0", che significa la fine della stringa deve essere inviata, altrimenti spazzatura saranno allegati alla tua corda.
opzionalmente, si può scegliere tra:
_sock = UDT::socket(AF_INET, SOCK_DGRAM, 0); --» default
o:
_sock = UDT::socket(AF_INET, SOCK_STREAM, 0); --» optional
- infine, correre,
nella cartella corrispondente:
python2.7 ./setup.py build
sudo python2.7 ./setup.py install
O, (se non si dispone delle autorizzazioni di amministratore per installarlo per tutti gli utenti, e vogliono solo provare per voi:
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
)
Poi, il codice per un semplice il cliente può essere:
import pyudt
socket = pyudt.pyudt_socket()
socket.connect(("127.0.0.1", 7000))
socket.send("hello_world!")
e funziona, parla con il mio server cpp!
avviso: se avete bisogno di ulteriore aiuto è possibile scrivere nella console del pitone:
import pyudt
dir(pyudt.pyudt_socket) # to list the available functions
help(pyudt) # to get more help
PS. i file creati con questa esercitazione di installazione sono: /usr/local/lib/python2.7/dist-packages/pyudt.so e /usr/local/lib/python2.7/dist-packages/pyudt-0.1a. egg-info