Tôi muốn sử dụng UDT library bằng Python, vì vậy tôi cần một trình bao bọc. Tôi tìm thấy cái này: pyudt, nhưng tôi không biết chính xác cách sử dụng này để gửi tệp từ một peer đến peer. Ai đó có thể chỉ cho tôi phương hướng đúng không?Trình bao bọc Python cho thư viện UDT C++
Trả lời
Bạn có thể dùng thử udt_py fork của mình. Nó bao gồm một mẫu recvfile.py
ngay bây giờ và có thể truy xuất tệp từ daemon sendfile
trong thư mục app
của udt.
sau bao nhiêu lần tôi đã tìm thấy câu hỏi này và giải pháp của nó:
Các bước để cài đặt pyudt-0.1a là:
cài đặt: libboost-python1.46-dev hoặc tương đương (ví dụ, trong linux-ubuntu12.04 nó trong reps.)
cài đặt udt.h (từ: http://sourceforge.net/projects/udt/) vào một thư mục hệ thống,
HOẶC
(đặt các tập tin udt.h trong đường dẫn tương tự như các tập tin pyudt-0.1a, và sau đó thay đổi một dòng của "pyudt.cpp", từ:
#include <udt.h>
để :
#include "udt.h"
).
- cập nhật các phiên bản của thư viện boost_python, trong "setup.py" với một bạn sử dụng,
Eg .:
... libraries=['udt', 'boost_python-py27'])
- thay đổi dòng sau (s) trong "pyudt.cpp":
bạn phải sửa lỗi, thay đổi từ:
int r = UDT::send(_sock, data.c_str(), data.length(), 0);
tới:
int r = UDT::send(_sock, data.c_str(), data.length()+1, 0);
vì nhân vật "\ 0" có nghĩa là kết thúc chuỗi cũng phải được gửi, nếu không rác sẽ được nối vào chuỗi của bạn.
tùy chọn, bạn có thể lựa chọn giữa:
_sock = UDT::socket(AF_INET, SOCK_DGRAM, 0); --» default
hay:
_sock = UDT::socket(AF_INET, SOCK_STREAM, 0); --» optional
- cuối cùng, chạy,
trong thư mục tương ứng:
python2.7 ./setup.py build
sudo python2.7 ./setup.py install
OR, (nếu bạn không có quyền admin để cài đặt nó cho tất cả những người sử dụng, và chỉ muốn thử nó cho bạn:
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
)
Sau đó, các mã cho một đơn giản khách hàng có thể là:
import pyudt
socket = pyudt.pyudt_socket()
socket.connect(("127.0.0.1", 7000))
socket.send("hello_world!")
và nó hoạt động, nó nói chuyện với máy chủ cpp của tôi!
thông báo: nếu bạn cần thêm sự giúp đỡ bạn có thể viết trong giao diện điều khiển của python:
import pyudt
dir(pyudt.pyudt_socket) # to list the available functions
help(pyudt) # to get more help
PS. các tệp được tạo bằng hướng dẫn cài đặt này là: /usr/local/lib/python2.7/dist-packages/pyudt.so và /usr/local/lib/python2.7/dist-packages/pyudt-0.1a. egg-info