2011-08-28 20 views
5

मैं पाइथन में UDT library का उपयोग करना चाहता हूं, इसलिए मुझे एक रैपर चाहिए। मुझे यह पता चला: pyudt, लेकिन मुझे नहीं पता कि पीयर से पीयर तक फ़ाइलों को भेजने के लिए इसका उपयोग कैसे किया जाए। क्या कोई मुझे सही दिशा में निर्देशित कर सकता है?यूडीटी सी ++ लाइब्रेरी के लिए पायथन रैपर

उत्तर

1

आप मेरी udt_py fork एक कोशिश दे सकते हैं। इसमें अब नमूना recvfile.py शामिल है और sendfile डिमन से udt की app निर्देशिका में फ़ाइलों को पुनर्प्राप्त कर सकता है।

2

इतने सारे समय के बाद मैं इस सवाल और इसके समाधान मिल गया है:

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। अंडे की जानकारी

संबंधित मुद्दे