PythonでUDTライブラリを使いたいのでラッパーが必要です。私はこれを見つけました: 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"
)。
- "setup.py" 内の boost_python ライブラリのバージョンを、使用しているバージョンに更新します。
例えば。:
... 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 サーバーと通信します!
注意: さらにヘルプが必要な場合は、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 です-情報
私のudt_py フォークを試してみてください。サンプルが含まれており、udt のディレクトリにrecvfile.py
あるデーモンからファイルを取得できます。sendfile
app