2011-08-28 104 views

回答

1

您可以試試我的udt_py fork。它現在包含一個樣本recvfile.py,並且可以從udt的app目錄中的sendfile守護程序中檢索文件。

2

這麼多的時間後,我發現這個問題,它的解決方案:

安裝pyudt-0.1A的步驟如下:

  • 安裝: libboost-python1.46-dev的或相當於 (例如,在linux-ubuntu12.04它在代表)。

  • udt.h(來源:http://sourceforge.net/projects/udt/)安裝到系統目錄下,

OR
(把udt.h文件作爲pyudt-0.1A文件相同的路徑,然後換行 「pyudt.cpp」 的,從:

#include <udt.h> 

到:

#include "udt.h" 

)。

  • 更新版本boost_python庫,在 「setup.py」 給你使用是 的人,

例如:

... libraries=['udt', 'boost_python-py27']) 
  • 更改以下行(s)in「pyudt.cpp」:

you 必須糾正錯誤,改變由:

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 

OR,(如果你沒有管理員權限來安裝它的所有用戶,而只是想試試你:

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-info