Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-02-2015
JuanOrtega JuanOrtega is offline
Miembro
NULL
 
Registrado: sep 2011
Posts: 130
Poder: 13
JuanOrtega Va por buen camino
Problema de conexion con Sockets

Hola estoy haciendo un chat en una aplicacion de consola en delphi y tengo un problema con el siguiente codigo :

Código Delphi [-]
program chat;

{$APPTYPE CONSOLE}
{$R *.res}

uses
  System.SysUtils, System.Win.ScktComp, idContext, idGlobal;

var
  ClientSocket1: TClientSocket;
  m: TMethod;

Procedure leer_datos(Sender: TObject; Socket: TCustomWinSocket);
Var
  Raw: String;
Begin
  Raw := Socket.ReceiveText;
  Writeln(Raw);
End;

begin
  try

    ClientSocket1 := TClientSocket.Create(nil);
    ClientSocket1.Address := '127.0.0.1';
    ClientSocket1.Port := 123;
    ClientSocket1.Open;

    m.Code := @leer_datos;
    m.Data := ClientSocket1;
    ClientSocket1.OnRead := TSocketNotifyEvent(m);

    while '1'='1' do
    begin
      //
    end;


except
  on E: Exception do
    Writeln(E.ClassName, ': ', E.Message);
end;

end.

El problema es que el evento para leer el codigo de respuesta del servidor nunca llega , parece que hice mal el evento OnRead en la aplicacion de consola.

¿ Cual es el problema ?

Última edición por JuanOrtega fecha: 28-02-2015 a las 22:16:17.
Responder Con Cita
  #2  
Antiguo 03-03-2015
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Cita:
Empezado por Lepuke Ver Mensaje
¿ Cual es el problema ?
No estoy seguro al 100%, pero yo diría que no asignas correctamente el evento.

En primer lugar, no tienes que usar TMethod. En segundo lugar, asignas el manejador del evento después de abrir el socket, así que normal que no lo llame porque no le das oportunidad.

Mira a ver si lo siguiente funciona (no tengo Delphi [ni Windows] en este momento, así que no puedo comprobarlo yo):
Código Delphi [-]
program chat;

{$APPTYPE CONSOLE}
{$R *.res}

uses
  System.SysUtils, System.Win.ScktComp, idContext, idGlobal;



  TYPE
  (* Mi Aplicación. *)
    TMiAplicacion = CLASS (TObject)
    PUBLIC
      PROCEDURE leer_datos (Sender: TObject);
    END;



  Procedure TMiAplicacion.leer_datos(Sender: TObject);
  Begin
    WriteLn (TCustomWinSocket (Socket).ReceiveText)
  End;

var
  MiApp: TMiAplicacion;
  ClientSocket1: TCustomWinSocket;
begin
  try
    MiApp := TMiAplicacion.Create;

    ClientSocket1 := TClientSocket.Create(nil);
    ClientSocket1.Address := '127.0.0.1';
    ClientSocket1.Port := 123;

    ClientSocket1.OnRead := @MiApp.leer_datos;

    ClientSocket1.Open;

    while '1'='1' do
    begin
      //
    end;


except
  on E: Exception do
    Writeln(E.ClassName, ': ', E.Message);
end;
  FreeAndNil (ClientSocket1);
  FreeAndNil (MiApp)
end.
En cualquier caso, quizá te venga bien echarle un vistazo a la biblioteca Synapse.

Y una pregunta, ¿Delphi no tiene una clase TCustomApplication, como Lazarus? Si es así, también te recomiendo que la uses porque te facilitará las cosas. En cualquier caso, un objeto "Aplicacion" casi siempre es útil, sobre todo en aplicaciones complejas.
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine

Última edición por Ñuño Martínez fecha: 03-03-2015 a las 12:22:13. Razón: Mejor código.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Conexión sencilla con un servidor via sockets rumenciac Internet 4 13-09-2010 10:44:29
Conexión por sockets. rauros Internet 1 16-09-2008 17:50:11
Conexion de Sockets muli Providers 2 16-11-2004 21:01:43
Conexión con Sockets Rabata Varios 1 02-11-2003 21:30:25
Problemas con conexión de sockets cone220 Internet 5 19-09-2003 17:06:34


La franja horaria es GMT +2. Ahora son las 18:04:33.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi