2012-01-04 9 views
5

मुझे नहीं पता कि इससे पहले जवाब दिया गया है (मैंने ऑनलाइन देखा लेकिन एक नहीं मिला), लेकिन नेटवर्क से जुड़े किसी अन्य कंप्यूटर पर नेटवर्क पर मैं एक फ़ाइल (.exe यदि संभव हो) कैसे भेज सकता हूं ? मैंने सॉकेट की कोशिश की लेकिन मैं केवल तार भेज सकता था और मैंने ftplib सीखने की कोशिश की है, लेकिन मुझे यह बिल्कुल समझ में नहीं आता है या अगर ftp भी मैं चाहता हूं, तो मैं पूरी तरह से स्थिर हूं। किसी भी इनपुट की सराहना की जाती है (और भी अगर कोई एफ़टीपी समझा सकता है, तो यह सॉकेट की तरह है? मेरे द्वारा देखे गए सभी उदाहरणों में एक सर्वर प्रोग्राम नहीं है जहां क्लाइंट कनेक्ट हो सकता है।)पाइथन में दो कनेक्टेड कंप्यूटरों के बीच फ़ाइल को कैसे स्थानांतरित करें?

+2

सामान्य सॉकेट के साथ ऐसा करना निश्चित रूप से संभव है। आपने क्या प्रयास किया –

+0

आपको केवल मेरे स्कूटर में जोड़े गए ज्ञान के दो मूल्यवान टुकड़ों के लिए 'scp' या' rsync' – wim

उत्तर

5

भेजने पक्ष के लिए कुछ साधारण उदाहरण कोड:

if os.path.exists(df): 
    with open(df, 'rb') as f: 
    packet = f.read(blocksize) 

    while packet != '': 
     conn.send(packet) 

     packet = f.read(blocksize) 

कहाँ:

df = 'path/to/data/file' 
blocksize = 8192 # or some other size packet you want to transmit. 
       # Powers of 2 are good. 
conn = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
+0

ठीक है धन्यवाद, तो क्या एफ़टीपी की आवश्यकता नहीं है? मैं अभी भी वास्तव में समझ नहीं पा रहा हूं कि इसका उपयोग – Baboon

+1

@ बाबून के लिए किया जाता है - एफ़टीपी फ़ाइल स्थानांतरण के लिए एक विशेष प्रोटोकॉल है, हां। इसमें कई सुविधाएं शामिल हैं जो ग्राहक/सर्वर सहमत हैं - पावती, स्थिति अपडेट, रीट्रीज़, समवर्ती, आदि। आप इस आरएफसी में संपूर्ण स्पेक पढ़ सकते हैं: https://www.ietf.org/rfc/rfc959.txt।हालांकि, फ़ाइल को स्थानांतरित करने का एकमात्र तरीका एफ़टीपी नहीं है, और डेटा संचारित करने के लिए सॉकेट का उपयोग करना निश्चित रूप से संभव है। आमतौर पर, सर्वर और क्लाइंट को शब्दावली/संवाद पर सहमत होना चाहिए और यह जानना चाहिए कि फ़ाइल को पूरी तरह से स्थानांतरित करने पर कैसे सहमति होनी चाहिए। –

6

ए। मैं SimpleHTTPServer का उपयोग करता हूं यह कभी कभी के लिए:

python -m SimpleHTTPServer 

... जो बंदरगाह 8000 पर मौजूदा निर्देशिका में फ़ाइलों में काम करेगा अन्य कंप्यूटर और डाउनलोड जो चाहो पर अपने वेब ब्राउज़र खोलें।

, उदा, आपके कंप्यूटर का आईपी पता जानने के लिए, आप ifconfig (उबंटू में) का उपयोग कर सकते हैं,: http://10.0.0.3:8000:

$ ifconfig 
enp0s31f6 Link encap:Ethernet HWaddr xx:xx:xx:xx:xx:xx 
      inet addr:10.0.0.3 Bcast:10.0.0.255 Mask:255.255.255.0 

फिर, अन्य कंप्यूटर में है, तो आप ब्राउज़र के लिए भेज देते हैं।

बी। यदि आपके पास एसएसएच सक्षम है तो आप कनेक्ट करने के लिए paramiko का उपयोग कर सकते हैं और एसएफटीपी स्थानांतरण जो कुछ भी आप चाहते हैं।

+0

+1 का उपयोग करना चाहिए! – Thanatos

3

ZeroMQ सॉकेट को बदलने के लिए मदद करता है।

आप एक पूरी फ़ाइल को एक कमांड में भेज सकते हैं।

एक ZMQ 'पार्टी' किसी भी प्रमुख भाषा में और किसी दिए गए ZMQ संचालित सॉफ्टवेयर के लिए लिखा जा सकता है, यह बात नहीं है क्या दूसरे छोर उस में लिखा

अपनी साइट से:।

यह आपको सॉकेट देता है जो विभिन्न संदेशों को विभिन्न इन-प्रोसेस, इंटर-प्रोसेस, टीसीपी और मल्टीकास्ट जैसे ट्रांसपोर्ट में ले जाता है। आप प्रशंसक, पब-सब, कार्य वितरण, और अनुरोध-उत्तर जैसे पैटर्न के साथ एन-टू-एन कनेक्ट सॉकेट कर सकते हैं।

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