मैं पाइथन में UDT library का उपयोग करना चाहता हूं, इसलिए मुझे एक रैपर चाहिए। मुझे यह पता चला: pyudt, लेकिन मुझे नहीं पता कि पीयर से पीयर तक फ़ाइलों को भेजने के लिए इसका उपयोग कैसे किया जाए। क्या कोई मुझे सही दिशा में निर्देशित कर सकता है?यूडीटी सी ++ लाइब्रेरी के लिए पायथन रैपर
उत्तर
आप मेरी udt_py fork एक कोशिश दे सकते हैं। इसमें अब नमूना recvfile.py
शामिल है और sendfile
डिमन से udt की app
निर्देशिका में फ़ाइलों को पुनर्प्राप्त कर सकता है।
इतने सारे समय के बाद मैं इस सवाल और इसके समाधान मिल गया है:
pyudt-0.1A स्थापित करने के लिए कदम हैं:
स्थापित: libboost-python1.46-देव या बराबर (उदाहरण के लिए, लिनक्स ubuntu12.04 में यह प्रतिनिधि हुआ है।)
udt.h (से: http://sourceforge.net/projects/udt/) स्थापित एक प्रणाली निर्देशिका में,
या
(pyudt-0.1A फ़ाइलों के रूप में एक ही रास्ते में udt.h फ़ाइल डाल दिया, और फिर "pyudt.cpp" की एक पंक्ति बदलने के लिए, से:
#include <udt.h>
को :
#include "udt.h"
)।
- अद्यतन boost_python पुस्तकालय के संस्करण, एक आप का उपयोग कर रहे हैं करने के लिए "setup.py" में,
उदा .:
... 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!")
और यह काम करता है, यह मेरे सीपीपी सर्वर से बात करता है!
नोटिस:
import pyudt
dir(pyudt.pyudt_socket) # to list the available functions
help(pyudt) # to get more help
पुनश्च: आप और अधिक मदद की तुम अजगर के कंसोल में लिख सकते हैं की जरूरत है। इस स्थापना ट्यूटोरियल के साथ बनाई गई फ़ाइलें हैं: /usr/local/lib/python2.7/dist-packages/pyudt.so, और /usr/local/lib/python2.7/dist-packages/pyudt-0.1a। अंडे की जानकारी