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