Enviar archivo por TCP
Enviar archivo por TCP
Hola, despues de bastante tiempo he vuelto!, Primero Feliz Navidad y próspero año nuevo. Bueno, vamos al pastel:
Como puedo enviar un archivo por TCP? He estado leyendo, y dicen que hay que transformar el archivo a binario o algo así, despues enviarlo y volver a convertirlo... alguien me puede orientar?
Gracias!
Como puedo enviar un archivo por TCP? He estado leyendo, y dicen que hay que transformar el archivo a binario o algo así, despues enviarlo y volver a convertirlo... alguien me puede orientar?
Gracias!
- Chefito
- Profesional del Autoit
- Mensajes: 2035
- Registrado: 21 Feb 2008, 18:42
- Ubicación: Albacete/Cuenca (España)
Re: Enviar archivo por TCP
Feliz navidad .
Mirate la función TCPSend en la ayuda. Puede enviar datos de texto y binarios hacia un socket.
Primero tendrías que guardar esos datos en una variable. Para eso tienes que abrir el archivo de forma binaria y leerlo. Inmediatamente lo almacenas en una variable. Para esto mira las funciones FileOpen con el modo=16, y FileRead para leerlo.
Al recibir los datos (con TCPRecv), tendrás que almacenarlos en una variable. Tendrás que guardar los datos en un fichero también utilizando FileOpen con modo 18, y la función fileWrite para escribir los datos en el fichero.
A groso modo sería algo así. Mira todo esto en la ayuda.
También te digo que nunca he mandado datos binarios con tcpsend y los he recibido con tcprecv, pero la ayuda pone que pueden mandar y recibir cadenas de texto y datos binarios, asique....... .
Saludos.
Mirate la función TCPSend en la ayuda. Puede enviar datos de texto y binarios hacia un socket.
Primero tendrías que guardar esos datos en una variable. Para eso tienes que abrir el archivo de forma binaria y leerlo. Inmediatamente lo almacenas en una variable. Para esto mira las funciones FileOpen con el modo=16, y FileRead para leerlo.
Al recibir los datos (con TCPRecv), tendrás que almacenarlos en una variable. Tendrás que guardar los datos en un fichero también utilizando FileOpen con modo 18, y la función fileWrite para escribir los datos en el fichero.
A groso modo sería algo así. Mira todo esto en la ayuda.
También te digo que nunca he mandado datos binarios con tcpsend y los he recibido con tcprecv, pero la ayuda pone que pueden mandar y recibir cadenas de texto y datos binarios, asique....... .
Saludos.
Cita vista en algún lugar de la red: En este mundo hay 10 tipos de personas, los que saben binario y los que no ;).
Re: Enviar archivo por TCP
tal cual.. el problema es el limite cuando revibis el archivo.. o en este caso el dato binario, ya que se debe especificar el maximo de caracteres.. si superas sierto numero .. au3 te da un error sobre k no ay suficiente memoria o similar :O..
por lo tanto yo tengo una forma.. es cortar el archivo especificado. osea.. leer por parte e ir enviando consecutivamente los datos.. bueno.. eh probado con archivos pequeños.. tengo k ver con mas grandes y utilizar esta tecnica k te cuento..
si no tenes ni una idea. me decis y vamos viendo k sale..
Saludos
por lo tanto yo tengo una forma.. es cortar el archivo especificado. osea.. leer por parte e ir enviando consecutivamente los datos.. bueno.. eh probado con archivos pequeños.. tengo k ver con mas grandes y utilizar esta tecnica k te cuento..
si no tenes ni una idea. me decis y vamos viendo k sale..
Saludos
Aunk no m Buskes, Seguro m enkontras!
- Ximorro
- Profesional del Autoit
- Mensajes: 1500
- Registrado: 10 Jul 2009, 12:35
- Ubicación: Castellón, España
Re: Enviar archivo por TCP
Efectivamente tienes que "partirlo", pero no se trata de partir realmente el archivo, sino ir leyendo en bloques de, digamos, 10kb, y luego lo vas recomponiendo de la misma manera (mientras TCPRecv va recibiendo datos los vas escribiendo con FileWrite, sabes cuántos bytes han llegado con el segundo parámetro, importante porque el último bloque no tendrá 10kb exactos).
Te recomiendo forzar siempre el modo binario. Aunque las funciones TCP (y UDP) manejan fácilmente textos, lo miran de una manera curiosa: si hay bytes a cero deducen que es binario, sino supone que es texto. Por defecto el modo es "texto" por cuestiones de compatibilidad con versiones anteriores, pero no lo recomiendan.
Te recomiendo forzar siempre el modo binario. Aunque las funciones TCP (y UDP) manejan fácilmente textos, lo miran de una manera curiosa: si hay bytes a cero deducen que es binario, sino supone que es texto. Por defecto el modo es "texto" por cuestiones de compatibilidad con versiones anteriores, pero no lo recomiendan.
"¿Y no será que en este mundo hay cada vez más gente y menos personas?". Mafalda (Quino)
- Chefito
- Profesional del Autoit
- Mensajes: 2035
- Registrado: 21 Feb 2008, 18:42
- Ubicación: Albacete/Cuenca (España)
Re: Enviar archivo por TCP
Bueno sí, si el archivo es grande y tienes problemas para su transferencia es mejor partirlo y luego unirlo con fileopen en modo 17 (16+1), para que los datos se vayan agregando al final del archivo que se va recibiendo. También puedes ir almacenandolo en una variable según venga, pero como sea muy muy grande te va a ocupar mucha memoria.
Decir también para quien no lo sepa que tcp tiene corrección de paquetes.....quiero decir, si alguno de los paquetes enviados ha llegado mal, solicita al emisor que le vuelva a enviar ese paquete. Udp no. Coge todos los paquetes llegen como llegen. Esto hace que udp sea más rápido pero arriesgándote a que te venga un paquete en mal estado y no funcione el archivo. Udp se suele utilizar en intranets (mucha velocidad y pocos fallos) y tcp en internet.
Esto solo era un poco de información para quien no lo sepa .
Saludos.
Decir también para quien no lo sepa que tcp tiene corrección de paquetes.....quiero decir, si alguno de los paquetes enviados ha llegado mal, solicita al emisor que le vuelva a enviar ese paquete. Udp no. Coge todos los paquetes llegen como llegen. Esto hace que udp sea más rápido pero arriesgándote a que te venga un paquete en mal estado y no funcione el archivo. Udp se suele utilizar en intranets (mucha velocidad y pocos fallos) y tcp en internet.
Esto solo era un poco de información para quien no lo sepa .
Saludos.
Cita vista en algún lugar de la red: En este mundo hay 10 tipos de personas, los que saben binario y los que no ;).
Re: Enviar archivo por TCP
Uff me veo muy perdido jaja, pero probaré, gracias!
Re: Enviar archivo por TCP
nekv escribió:Uff me veo muy perdido jaja, pero probaré, gracias!
Nada, nada. Divide y vencerás.
Crea un script servidor, que escuche y luego otro script cliente, que hable (envíe). Comienza enviando caracteres sueltos. Una vez tengas esta estructura hecha, comienza con los archivos. Lee los foros gringos que hay muchos ejemplos y mejor enviar en binario, que hay caracteres como el NULL que pueden dar problemas.
Suerte!
Re: Enviar archivo por TCP
Bueno, aqui estoy de nuevo.
He probado a enviar una imágen, y pero es que sólo se crea un fragmento de la imagen... no se si me explico.
He probado a enviar una imágen, y pero es que sólo se crea un fragmento de la imagen... no se si me explico.
- Chefito
- Profesional del Autoit
- Mensajes: 2035
- Registrado: 21 Feb 2008, 18:42
- Ubicación: Albacete/Cuenca (España)
Re: Enviar archivo por TCP
Lo hemos dicho 200.000 veces. Pon el código esté como esté y te lo miraremos. Dinos donde falla para ir directo al grano.
Saludos.
Saludos.
Cita vista en algún lugar de la red: En este mundo hay 10 tipos de personas, los que saben binario y los que no ;).
- Ximorro
- Profesional del Autoit
- Mensajes: 1500
- Registrado: 10 Jul 2009, 12:35
- Ubicación: Castellón, España
Re: Enviar archivo por TCP
Amén
"¿Y no será que en este mundo hay cada vez más gente y menos personas?". Mafalda (Quino)
Re: Enviar archivo por TCP
Chefito escribió:Lo hemos dicho 200.000 veces. Pon el código esté como esté y te lo miraremos. Dinos donde falla para ir directo al grano.
Saludos.
Pero si es nuevo.. no sabe jejej..!
Aunk no m Buskes, Seguro m enkontras!
Re: Enviar archivo por TCP
Lee este post. No lo he probado , pero las funciones tienen buena pinta..
http://www.autoitscript.com/forum/index ... opic=46341
Ya nos cuentas!
http://www.autoitscript.com/forum/index ... opic=46341
Ya nos cuentas!
Re: Enviar archivo por TCP
Bueno, ahora eso ya lo he solucionado...
Ahora, tengo otra duda... es posible tener varias conexiones? Porque de esto si que no tengo ni la menor idea de como podría hacerlo..
Ahora, tengo otra duda... es posible tener varias conexiones? Porque de esto si que no tengo ni la menor idea de como podría hacerlo..
Re: Enviar archivo por TCP
podrias postear el codigo plix!
- 0 error(s), 0 warning(s) FUCK YEA!
http://xapus.blogspot.com/
http://xapus.blogspot.com/
- Chefito
- Profesional del Autoit
- Mensajes: 2035
- Registrado: 21 Feb 2008, 18:42
- Ubicación: Albacete/Cuenca (España)
Re: Enviar archivo por TCP
Claro que es posible. Una forma podría ser con un array de variables que reciban o manden datos, e ir comprobando las conexiones con un timer (ejemplo _Timer_SetTimer).nekv escribió:es posible tener varias conexiones? Porque de esto si que no tengo ni la menor idea de como podría hacerlo..
Saludos.
Cita vista en algún lugar de la red: En este mundo hay 10 tipos de personas, los que saben binario y los que no ;).