FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
#1
|
|||
|
|||
Indy y Threads
Hola a todos, se me presenta la siguiente situacion, tengo un servidor de impresion para impresoras fiscales de TPV, y varios clientes en una red conectados a este servidor a traves de socket, el envio de mesajes es con string usando los CommandHandler del TcpServer.
El tema es que cuando el servidor recibe el string con el cual se inicia el Command de la impresion, inicia todo bien pero al invocar un metodo propio de la impresora el cliente se desconecta y el comando no se ejecuta o se da la inverso, es decir el comando no se ejecuta por lo que le cliente se desconecta a pesar de que la propiedad disconnect del CommandHandler = False, revise los metodos de impresion y son los correctos, si a alguien le sucedio algo parecido aceptare cualquier sugerencia, Gracias. |
#2
|
|||
|
|||
No entiendo bien la pregunta, pero podría sugerirte que crees un hilo cada vez que tengas que imprimir algo...
Es decir cuando ejecute el comando, creas un hilo y dejas que el cliente siga a la escucha de nuevos eventos.. |
#3
|
|||
|
|||
Redefiniendo pregunta
Primero que nada gracias por responder, segundo, probrando de nuevo logre darme cuenta cual es problema, mi aplicacion servidor crea hilos por cada cliente que se conecta a el, cuando desde un cliente llega la peticion de impresion salta la excepcion EAccessViolation, si tu sabes a raiz de que se lanza esta excepcion te agradeceria, probe en los clientes eliminar la sincronizacion pero sigue igual, ahora estoy viendo TCriticalSection haber si con esto lo logro. Cualquier sugerencia sera bienvenida.Saludos.
|
#4
|
|||
|
|||
Podrías Incluir parte del código, para poder analizarlo?
Saludos. John Cook. |
#5
|
|||
|
|||
Redefiniendo el problema
El tema ahora es el siguiente:
Ejemplificando, tengo un TIdTCPServer con un objeto publico impresora que hace referencia a un objeto fisico de impresion, cuando hago uso de este objeto desde la misma aplicacion, es decir, desde el mismo formulario , a traves de un boton, por ejempli funciona todo correctamente, pero he aqui, que cuando algun cliente TIdTCPClient envia un comando al servidor y en el metodo que se ejecuta quiero hacer uso de ese objeto salta la excepcion de AccessViolation, estoy bastante desconcertado, sera por los hilos que crea el servidor para atender a los clientes, no podran acceder a este objeto, no se. Probando y probando, inspecciondo el objeto, los valores que adquiere, este toma valores validos pero no lo puedo utilizar de esta manera. Espero haber sido claro en la explicacion sino avisame. Saludos. |
#6
|
|||
|
|||
Peluca: Insisto de que incluyas al menos unas líneas de código......
Creo que con el código del comando bastaría... Por el tipo de error que mencionas, me imagino que puede ser a causa de que estas referenciando objetos sin haberlos creado previamente. Es por eso que me gustaría ver el código que incluyes cuando se ejecuta el comando... Espero tu respuesta.... Saludos. John Cook. |
#7
|
|||
|
|||
TIdPeerThread
Hola buenas, tengo un problema con la clase TIdPeerThread, alguien podria por favor decirme en que libreria de delphi se encuentra, aunque he mirado que segun deberia estar incluido con los indy,... pero en que version de indy esta, tenia la version 9 y la cambie por la 10.0.76 y nada, no me aparece. espero alguien pueda ayudarme y si alguien tiene un link donde encontrar el paquete que los contiene. se lo agradeceria mucho.
|
#8
|
||||
|
||||
@genyus00: Dado que tu problema no tiene relación directa con el tema del hilo, te sugiero que publiques una nueva pregunta.
Si te sirve de algo, puedo decir que la clase TidPeerThread no existe más en Indy 10, ya que es una de las re-factorizaciones mayores que sufrió la biblioteca, hace ya bastantes años... tantos que no logro recordar cuándo fue que se publicó la versión. Un saludo.
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
|