2011-05-11 27 views
7

मेरे पास दो कंप्यूटर हैं, दोनों इंटरनेट से जुड़े हुए हैं। मैं उनके बीच कुछ बुनियादी डेटा स्थानांतरित करना चाहता हूं (तार, इंट्स, फ्लोट्स)। मैं नेटवर्किंग के लिए नया हूं इसलिए मैं ऐसा करने का सबसे आसान तरीका ढूंढ रहा हूं। मैं ऐसा करने के लिए क्या मॉड्यूल देख रहा हूँ?इंटरनेट पर डेटा स्थानांतरित करने का सबसे आसान तरीका, पायथन

दोनों सिस्टम विंडोज 7 चलाने की जाएगी

+1

बस किया! मैंने कई लोगों को श्रेय दिया जो उन्होंने लायक थे। – rectangletangle

+0

और, भविष्य में खुद को और अधिक जवाब प्राप्त करने में मदद की :) आप वास्तव में कुछ सुनने में से एक हैं –

उत्तर

4

जब तक इसकी अतुल्यकालिक नहीं के रूप में (भेजने और एक ही बार में प्राप्त कर रही है), तो आप the socket interface उपयोग कर सकते हैं।

यदि आप की तरह कपोल-कल्पना (या अतुल्यकालिक समर्थन की जरूरत), वहाँ हमेशा है Twisted.

यहाँ सॉकेट इंटरफ़ेस (जो के रूप में अपने कार्यक्रम बड़ा बढ़ता उपयोग करने के लिए कठिन हो जाएगा के साथ एक उदाहरण है, इसलिए, मेरा सुझाव है कि या तो मुड़ या asyncore)

import socket 

def mysend(sock, msg): 
    totalsent = 0 
    while totalsent < MSGLEN: 
     sent = sock.send(msg[totalsent:]) 
     if sent == 0: 
      raise RuntimeError("socket connection broken") 
     totalsent = totalsent + sent 

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 

s.connect(("where ever you have your other computer", "port number")) 

i = 2 
mysend(s, str(i)) 

अजगर प्रलेखन उत्कृष्ट है, मैं वहाँ से mySend() फ़ंक्शन का चुनाव किया।

यदि आप गणना से संबंधित काम कर रहे हैं, तो XML-RPC देखें, जो कि पाइथन आपके लिए अच्छी तरह से पैक किया गया है।

याद रखें, सॉकेट फाइलों की तरह ही हैं, इसलिए वे कोड लिखने के लिए वास्तव में बहुत अलग नहीं हैं, इसलिए, जब तक आप मूल फ़ाइल io कर सकते हैं, और घटनाओं को समझ सकते हैं, सॉकेट प्रोग्रामिंग कठिन नहीं है (जब तक आप वीओआईपी धाराओं को मल्टीप्लेक्सिंग की तरह जटिल नहीं पाते हैं ...)

1

यदि आपको सॉकेट के बारे में पूरी तरह से कोई जानकारी नहीं है, तो ट्विस्टेड का उपयोग करना थोड़ा मुश्किल हो सकता है। और जैसा कि आपको स्थानांतरित किए जा रहे डेटा के प्रकार की पहचान करने की आवश्यकता है, चीजें कठिन हो जाएंगी।

तो शायद ICE, the Internet Communication Engine का पायथन संस्करण अधिक उपयुक्त होगा क्योंकि यह नेटवर्क प्रोग्रामिंग के बहुत गंदे विवरण छुपाता है। यह देखने के लिए कि यह आपका काम करता है, hello world का एक नज़र डालें।

0

यहाँ देखो: आप, के रूप में मुझे लगता है कि आप, सॉकेट उपयोग करने के लिए कोशिश कर रहे हैं यह है कि आप क्या देख रहे हैं: https://docs.python.org/2/howto/sockets.html

मुझे आशा है कि यह मदद मिलेगी के रूप में यह मेरे लिए अच्छी तरह से काम किया। या निरंतर कनेक्शन के लिए इस वर्ग को जोड़ें:

class mysocket: 
    '''demonstration class only 
     - coded for clarity, not efficiency 
    ''' 

    def __init__(self, sock=None): 
     if sock is None: 
      self.sock = socket.socket(
       socket.AF_INET, socket.SOCK_STREAM) 
     else: 
      self.sock = sock 

    def connect(self, host, port): 
     self.sock.connect((host, port)) 

    def mysend(self, msg): 
     totalsent = 0 
     while totalsent < MSGLEN: 
      sent = self.sock.send(msg[totalsent:]) 
      if sent == 0: 
       raise RuntimeError("socket connection broken") 
      totalsent = totalsent + sent 

    def myreceive(self): 
     chunks = [] 
     bytes_recd = 0 
     while bytes_recd < MSGLEN: 
      chunk = self.sock.recv(min(MSGLEN - bytes_recd, 2048)) 
      if chunk == '': 
       raise RuntimeError("socket connection broken") 
      chunks.append(chunk) 
      bytes_recd = bytes_recd + len(chunk) 
     return ''.join(chunks)