2011-05-11 25 views
7

Tengo dos computadoras, ambas están conectadas a Internet. Me gustaría transferir algunos datos básicos entre ellos (cadenas, ints, flotadores). Soy nuevo en la creación de redes, así que estoy buscando la forma más sencilla de hacerlo. ¿Qué módulos estaría buscando para hacer esto?La forma más fácil de transferir datos por Internet, Python

Ambos sistemas ejecutar Windows 7.

+1

Just did! Le di a muchas personas el crédito que merecían. – rectangletangle

+0

Y, se ayudó a obtener más respuestas en el futuro :) Eres uno de los pocos que realmente escuchan –

Respuesta

4

Mientras que no es asíncrona (hacer el envío y recepción a la vez), puede utilizar the socket interface.

Si te gusta abstracciones (o necesita soporte asíncrono), siempre hay Twisted.

Aquí se muestra un ejemplo con la interfaz de socket (que pasará a ser más difícil de usar como su programa se hace más grande, así que, sugeriría cualquiera documentación

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

la pitón Twisted o asyncore) es excelente, cogí la función mysend() desde allí.

Si está realizando un trabajo relacionado con la computación, consulte XML-RPC, que python ha preparado muy bien para usted.

Recuerde, las tomas son como los archivos, así que no son muy diferentes para escribir códigos, por lo tanto, siempre que pueda hacer un archivo básico y comprender los eventos, la programación del socket no es difícil, en absoluto (siempre y cuando no se vuelva demasiado complicado como la multiplexión de flujos de VoIP ...)

1

Si no tiene absolutamente ninguna idea de qué socket es, podría ser un poco difícil de usar Twisted. Y como necesita identificar el tipo de datos que se transfieren, las cosas serán más difíciles.

Por lo tanto, quizás la versión python de ICE, the Internet Communication Engine sea más adecuada porque oculta muchos detalles sucios de la programación de la red. Eche un vistazo al hello world para ver si hace su trabajo.

0

vistazo aquí: Si, como creo que usted está tratando de utilizar sockets esto es lo que busca: https://docs.python.org/2/howto/sockets.html

espero que esto ayudará, ya que funcionó bien para mí. o agregue esta clase para la conexión constante:

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