2011-05-11 101 views
7

我有兩臺電腦,都連接到互聯網。我想在它們之間傳輸一些基本數據(字符串,整數,浮點數)。我是新來的網絡,所以我正在尋找最簡單的方法來做到這一點。我會在看什麼模塊來做到這一點?通過互聯網傳輸數據最簡單的方法,Python

兩個系統都將運行Windows 7

+1

剛剛做到了!我給了很多人他們應得的榮譽。 – rectangletangle 2011-05-12 04:57:47

+0

而且,幫助你自己在未來獲得更多答案:) 你是少數真正聽過的人之一 – 2011-05-13 20:45:18

回答

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)) 

Python文檔是優秀的,我從那裏拿起mysend()函數。

如果你正在做計算相關的工作,看看XML-RPC,哪個python已經很好地打包給你。請記住,套接字就像文件一樣,所以它們與編寫代碼並沒有太大的不同,所以,只要你可以做基本的文件io,並且理解事件,套接字編程並不困難,畢竟,套接字編程並不難(只要你不像複用VoIP流那麼複雜...)

1

如果你完全不知道什麼是socket,那麼使用Twisted可能有點困難。而且,由於您需要確定正在傳輸的數據的類型,事情會變得更加困難。

所以也許python版本的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)