enviar archivo a través de sockets

tny a.porrua en gmail.com
Mar Nov 7 22:59:51 CET 2006


El mar, 07-11-2006 a las 11:10 -0500, Arnau Sanchez escribió:
> Alejandro Delgado Gallego escribió:
> > ¿Entonces sería algo así?, digo sería porque ahora mismo no puedo 
> > probarlo:
> >
> > Cliente:
> > #por aqui arriba se crea el socket
> > file_name= sys.argv[3]
> > f = open(file_name, 'rb')
> > # recibimos y escribimos en el fichero
> > l = f.read(f, 1024) # ¿que tamaño se pone?
> > while (l):
> >   s.send(l)
> >   l = f.read(f, 1024) # ¿que tamaño se pone?
> el que quieras mientras no sea ni muy grande ni muy pequeño (siempre una 
> potencia de 2, aunque sólo sea por cuestiones estéticas :-). 1024 es 
> perfectamente correcto (si no recuerdo mal, la constante usada 
> históricamente en FreeBSD, sin ir más lejos).
> > Servidor:
> > #nuevo fichero
> > f = open('file_'+ str(i),'wb') #abierto en escritura binaria
> > # recibimos y escribimos en el fichero
> > l = s.recv(1024)
> > while (l):
> >  f.write(l)
> >  l = s.recv(1024)
> > f.close()
> una pregunta, ¿antes de esto, haces todo lo de bind, listen, accept, etc?
> 
> por lo demás parece correcto, sólo un detalle: en tu bucle escribes dos 
> veces "l = s.recv(1024)", pero hay que evitar repetir líneas de código. 
> En su lugar, puedes usar una estructura típicamente pythonica:
> 
> while 1:
>     l = s.recv(1024)
>     if not l: break
>     f.write(l)

disculpa pero de éste modo haces el 2 comprobaciones de l por cada
iteración, será más pytónico pero también es más ineficiente.

------------ próxima parte ------------
_______________________________________________
Python-es mailing list
Python-es en aditel.org
http://listas.aditel.org/listinfo/python-es


Más información sobre la lista de distribución Python-es