TODOPIC

Lenguajes de programación para PC => Delphi => Mensaje iniciado por: jfh900 en 08 de Mayo de 2006, 22:08:09

Título: Delphi 7 y TCPClient
Publicado por: jfh900 en 08 de Mayo de 2006, 22:08:09
Tengo el problema que al intentar conectar con delphi y el componente TcpClient a un servidor todo lo hace bien pero me da problemas al leer la respuesta del servidor. El código que tengo puesto es:

Código: Delphi
  1. procedure TForm1.BitBtn2Click(Sender: TObject);
  2. begin
  3.    TcpClient1.Sendln(Edit3.Text,CRLF);
  4.    while TcpClient1.WaitForData(1000) do;
  5.    Memo1.Lines.Add(TcpClient1.Receiveln(#$D#$A));
  6. end;

O no recivo datos, o se cuelga o me da una excepción, que estoy haciendo mal?.

Un saludo y gracias por leerme.
Título: Re: Delphi 7 y TCPClient
Publicado por: RedPic en 09 de Mayo de 2006, 05:17:32
En (depende de tu directorio de instalación) C:\Archivos de programa\Borland\Delphi6\Demos\Internet\NetChat tienes un ejemplo de como usar los TTCPClient y TTCPServer. Roguemos a los dioses electrónicos que en Delphi7 hayan respetado los ejemplos de Delphi6 ...

En caso de que Delphi 7 ya no lleve este ejemplo dáme un toque y te lo zipeo y envío.

Un saludo.
Título: Re: Delphi 7 y TCPClient
Publicado por: jfh900 en 09 de Mayo de 2006, 05:52:23
Los dioses no nos han escuchado por que estos ejemplos no aparecen, lo mas parecido si es que se puede decir parecido es una aplicacion de chat pero que no se ve como utilizar estos componentes ya que los emplea de una forma rara. Por lo tanto si me puedes enviar los ejemplos haber si saco algo de provecho te lo agradeceria.

Un saludo.
Título: Re: Delphi 7 y TCPClient
Publicado por: maunix en 09 de Mayo de 2006, 08:31:54
Los dioses no nos han escuchado por que estos ejemplos no aparecen, lo mas parecido si es que se puede decir parecido es una aplicacion de chat pero que no se ve como utilizar estos componentes ya que los emplea de una forma rara. Por lo tanto si me puedes enviar los ejemplos haber si saco algo de provecho te lo agradeceria.

Un saludo.

No uso ese componente por eso no te puedo dar una ayuda mas fina, pero como sugerencia, antes de hacer un TCPClient tienes que hacer un connect.  Tiene que haber un vínculo entre Server y Host (o Client), una de las diferencias entre TCP y UDP.

El TCP.SendLn lo puedes enmarcar dentro de un try.. except y capturar el mensaje de error.  De esa manera podrás tener una idea mas clara de qué es lo que está sucediendo y tu software seguirá corriendo.

Si quieres los ejemplos del delphi, dime tu mail y te lo adjunto.

Saludos
Título: Re: Delphi 7 y TCPClient
Publicado por: jfh900 en 09 de Mayo de 2006, 08:49:06
El programa esta funcionando en parte correctamente, me explico, el cliente se conecta al servidor y le manda un comando para ejecutar en el servidor, y el servidor responde con un resultado. Todo funciona bien a excepción de la recepcion de los resultados del servidor. El cliente cuando leo los datos recibidos no devuelve nada y ademas da una violación de lectura o escritura (no recuerdo ahora) de la meoria. La parte que interviene y esta mal es la que puese en un post anterior. Tambien decir que los Socket enDelphi 7 estan encapsulados bajo los componentes TcpServ y TcpClient y que no trae ni un ejemplo decente de como utilizarlo y que no de problemas. Al final no se si es problema del componente o de que yo lo programo mal.

Un saludo y gracias a todos por vuestro interes.
Título: Re: Delphi 7 y TCPClient
Publicado por: elmasvital en 09 de Mayo de 2006, 12:03:52
mmm oye revisa una cosa porque hace años de esto pero una vez tube que corregir algo en la libreria de delphi 7 sobre tcp client. Estaba haciendo un cliente de msn en delphi y me encontraba que había por ahí un timeout puesto a 0 en infinito asi que usa el google para tu problema no vaya a ser el mismo.

1 slaudo.
Título: Re: Delphi 7 y TCPClient
Publicado por: jfh900 en 09 de Mayo de 2006, 20:36:45
Bueno, a grandes males grandes remedios. Como me urge terminar el trabajo que estoy haciendo he tomado la siguiente solución: el componente TcpClient encapsula al objeto TClientSocket que logicamente no existe en la paleta pero existe en las librerias en concreto en la unit ScktComp, así que lo he declarado a pelo, le he asignado a mano los eventos y a funcionar. El cliente TcpClient es una mala encapsulación de este objeto, que si que funciona bien. Por cierto la versión es Delphi 7.

Un saludo y gracias a todos por vuestro interes.
Título: Re: Delphi 7 y TCPClient
Publicado por: maunix en 10 de Mayo de 2006, 10:23:42
Bueno, a grandes males grandes remedios. Como me urge terminar el trabajo que estoy haciendo he tomado la siguiente solución: el componente TcpClient encapsula al objeto TClientSocket que logicamente no existe en la paleta pero existe en las librerias en concreto en la unit ScktComp, así que lo he declarado a pelo, le he asignado a mano los eventos y a funcionar. El cliente TcpClient es una mala encapsulación de este objeto, que si que funciona bien. Por cierto la versión es Delphi 7.

Un saludo y gracias a todos por vuestro interes.

Es una pena.  En lo personal uso los componentes INDY que trae el delphi.  Para comenzar a usarlos, te sugiero te bajes el Indy 10 (el Delphi 7 trae el indy 9 si mal no recuerdo). 

Estos componentes me han demostrado funcionar muy bien , ser free y estar muy bien depurados.  No tengo quejas al respecto.  Tal vez se peque de falta de documentación (algo comun en las aplicaciones free) lo cual obliga por ahi a averiguar cosas en solitario mediante prueba/error.  De todas formas, prefiero eso a tener que comprar alguno.

Esto se está solucionando de a poco y hay una lista de correo que se llama Indy Demos que versa sobre el tema de los ejemplos.

Saludos