![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
Bueno, despues de mucho trabajo lo hice funcionar y va genial aunque seguramente tendrá fallos que no haya visto.
Ahora estoy liado con el envio y recepcion de archivos y para eso hago esto: Para recibir: Código PHP:
Código PHP:
|
|
#2
|
||||
|
||||
|
Veo que te has puesto manos a la obra.
He estado ocupado pero en un ratito libre he preparado un ejemplo a bajo nivel con WinSock en programas de consola. Se trata de un pequeño prototipo de chat con modelo cliente servidor y protocolo TCP aceptando una sola conexión, para no liar la cosa. Dejo el código muy comentado por si más adelante te interesa el manejo a bajo nivel sin componentes: Servidor: Código PHP:
Código PHP:
Última edición por escafandra fecha: 04-10-2014 a las 18:25:44. |
|
#3
|
||||
|
||||
|
amigo ya he conseguido hacer eso pero ahora quiero enviar archivos y como en c++builder para el chat lo tengo asincronico pues no puedo ir recibiendo trozos e indicar al servidor que ya llegó para que siga ya que me los manda todos de golpe y lo mando en bloques de 1024 bytes y si pasa de 8192 bytes (8 bloques) el servidor da error al enviar y ademas al usar retval = Socket->ReceiveBuf(buffer,lenBuff); lo que obtengo es tanto la cadena que envio como flag para indicar que es un archivo lo que quiero enviar, como el contenido del archivo, todo en un bloque de 8192 y luego vuelve a entrar en el evento y me muestra el resto como mensajes de texto. ¿como hago para mandar bloques de un archivo y que el cliente lo reciba como tal y luego los una y obtenga un archivo igual que el original? Para archivos pequeños he hecho esto:
Código PHP:
|
|
#4
|
||||
|
||||
|
A ver, para archivos pequeño he hecho esto y funciona:
Código PHP:
|
|
#5
|
||||
|
||||
|
Bueno, he conseguido transferir archivos aunque no creo que sea del todo correcto lo que hago para conseguirlo
. Primero paso una mascara para indicar que es un envio de archivo y a continuacion mando una estructura donde indico el nombre del archivo, su tamaño, y el número de bloques a enviar. He colocado un Sleep para poder enviar sin perder datos por el camino. Os adjunto el fuente para que si alguien quiere mirarlo y ayudarme a mejorarlo para hacerlo funcionar correctamente pues se lo agradeceria ya que a veces se pierden bytes por el camino aunque la mayor parte de las veces llega el fichero correctamente pero otras veces se queda el receptor esperando como si faltara algun bloque por llegar.Aqui el link |
|
#6
|
||||
|
||||
|
No creo que estés usando el método adecuado. Es mejor que la comunicación sea síncrona y ten en cuenta que los paquetes se pueden unir o separar. No tengo ahora tiempo de realizar un ejemplo. Puedes, también, usar la API TransmitFile
Te dejo un fragmento de código funcional para recibir ficheros por esta vía, previamente debes haber comunicado el tamaño del fichero y nombre a transferir (SizeFile y lpPathName): Código PHP:
|
|
#7
|
||||
|
||||
|
Bueno, te he preparado un rápido ejemplo sobre el chat que te envié antes y sin usar componentes de VCL. Sokets "a pelo".
En el chat, si el cliente envía "Envia Fichero" (sin acento para no confundir caracteres), el servidor envía un fichero llamado Prueba0.bmp que es un bmp grande. El cliente lo recibe y lo guarda como Prueba.bmp. A continuación el server recibe la palabra y sigue la comunicación... Te expongo las funciones que envían y reciben el fichero: TransmitFile.h Código PHP:
Código PHP:
PD/ Borro el anterior chat porque este es idéntico, añadiendo la nueva funcionalidad Saludos. Última edición por escafandra fecha: 24-03-2018 a las 13:09:57. |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Ellas y Ellos | jcarteagaf | Humor | 1 | 06-08-2011 03:43:05 |
| Llamada entre ventana usando paquetes. | PittyDelphi | OOP | 3 | 27-01-2011 12:28:37 |
| ¿Saben algo de ellos? | roman | La Taberna | 11 | 18-11-2008 18:59:07 |
| Comunicación TCP/IP entre dos programas usando componentes INDY | Roger_Delphi | Internet | 2 | 20-10-2008 14:02:49 |
| Comunicacion entre procesos | walito | Varios | 0 | 14-11-2007 21:55:53 |
|