![]() |
Duda al enviar archvio por socket mediante hilos
Hola:
Hace un poco de tiempo, me resolvieron un problema aqui de como enviar archivos con los socket que trae delphi.... Ahora mi pregunta es, (el tema esta en este enlace, al final de la pagina esta el .zip el que se trato en dicho dia), ¿Como puedo ejecutar el codigo que esta en el clientread, que es cuando recibe las partes del archivo, en un hilo?, por mas y mas que busco en internet no consigo saber como hacerlo, ya que si meto ese codigo en un procedimiento definido por mi no podria obtener el socket.recievelength ni el recievebuf... gracias de antemano. |
bueno veo que nadie contesta, he pensado que puede ser por falta de informacion, bueno aquie adjunto el codigo del evento onread de mi socket, la conexion es inversa...
si este codigo lo meto en otro procedimiento declarado por mi, no puedo hacer referencia ala variable socket, es decir , no sabria que socket me esta enviando las partes de archivo...¿como lo puedo hacer para meterlo en un hilo?, lo quiero meter en el hilo por que la aplicacion se me cuelga y se me recupera constantemente hasta que llega el archivo. |
Hola max!
Realmente no comprendo lo que quieres, o es que tú no estás entendiendo el problema y por eso no sabes como solucionarlo. Explícate mejor lo que deseas. Una idea global de lo que quieres, y cómo has intentado o estás intentando obtenerlo. Saludos, Chris |
Hola, muchas gracias por contestar jejeje este tema me lleva loco unos dias jejeje, nada pues es muy siemple lo que quiero hacer es lo siguiente:
Ese codigo es el que yo uso en el evento onread del cliente 2, osea yo tengo 2 TclientSocket y 2 Tserversocket cada uno en su correspondiente proyecto, bien, desde el server 1 envio el nombre y el peso del arhivo al cliente 1, bien en el onread del server 1 recibo eso, lo asigno a sus correspondientes variables y activo una variable llamada recibiendoarchivo a true, bien, despues el server 2, en encarga de ir enviando las partes del archivo al cliente 2 y ya se ejecuta este codigo. Mi problema: Que la aplicacion hasta que termina de recibir todo el archivo se va quedando colgada. Lo que quiero hacer o intento xdd: buscar la manera de hacer todo esto en un thread para que la aplicacion no se cuelgue, pero por mas y mas que he buscado y he leido no lo logro hacer. Espero haber sido claro, gracias. |
Hola!
Ahora entiendo tu problema y lo que quieres. Mira, la forma en como implementar aplicaciones multihilo depende de cada caso. Intenté escribirte un pseudo código para guiarte pero me ha detinido no comprender muy bien el uso que le das a ciertas variables. Por ejemplo:
El pseudo código que te tengo es este:
Por otro lado, en este código, estás utilizando la variable global "Form4" que no es recomendable bajo ninguna circunstancia. Utiliza "Self" en lugar de "Form4". |
ok, pero... ¿que hago con esto?, si yo envio el stream desde el server 2, ¿como hago yo para conectar el socket del hilo con el server 2? y ¿cuando invoco el execute del hilo? puff no tengo ni zorra idea jajaja nunca se me ha resistido nada en delphi y los putos hilos hablando bien me tienen hasta los hu....
Saludos y gracias por contesta, esperare tu respuesta. |
No se trata que vallas a utilizar ese código. Te había dicho que ese código no está terminado aún. Es solo el esqueleto -por decirlo de cierta manera- de cómo debería implementarse según mi experiencia en aplicaciones multihilo. Te comenté que no sabía el significado o uso de algunas variables. Por ese desconocimiento es que no pude escribir un código más preciso.
Saludos, Chris |
FStream - Es una variable que tengo como globlal asi no tengo que declararla en diferentes procedimientos, q es de tipo TFileStream
RecibiendoArchivo - Es un variable booelana, que cuando yo envio el nombre y el peso del archivo crear el archivo y esta variable la activo a true para que asi en el evento onread del cliente 2 puede ejecutarse el codigo E_RutaLocal - Es un componente text del cual escojo el string para tener la ruta del archivo. NombreArchivoRecibido - Esta como su nombre dice seria el nombre del archivo que recibimos es una paranolla de todos modos no le des importancia esas variables no interfieren a la hora de recibir el archivo yo las uso para hacer otras cosas, pero si no estubieran el codigo funcionaria igualmente, esto es para un filemanager que estoy haciendo. |
La franja horaria es GMT +2. Ahora son las 07:24:23. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi