Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 24-11-2008
vejerf vejerf is offline
Miembro
 
Registrado: ene 2007
Posts: 206
Poder: 18
vejerf Va por buen camino
Ayuda con cliente/servidor (sockets)

Muy buenas a todos,
Estoy intentando familiarizarme un poco con los componentes Indy TIdTCPClient y TIdTCPServer, pero necesito ayuda. Lo que intento es realizar un programita al que puedan conectarse uno o varios clientes. Estos clientes una vez conectados no realizan ninguna petición, sino que el servidor conforme va actualizando unos elementos, envía dicha actualización a los clientes. Esto es así de simple. Busco algo como:

Si Servidor.ContadorClientes > 0 entonces
for I:=0 to Servidor.ContadorClientes do
begin
Servidor.Cliente[i].EnviarDatos;
end;

Y por otra parte el cliente debería estar esperando los datos que le llegan por parte del servidor.
Datos := Cliente.LeerDatosServidor;
ActualizarDatos(Datos);

Espero haberme explicado... muchas gracias!!!
__________________
"Patientia et constantia taelecum"
Responder Con Cita
  #2  
Antiguo 25-11-2008
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
¿Has revisado los ejemplos que vienen con Delphi? ¿Exactamente qué necesitas? ¿Has probado algo? ¿No te funciona?
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 25-11-2008
vejerf vejerf is offline
Miembro
 
Registrado: ene 2007
Posts: 206
Poder: 18
vejerf Va por buen camino
Hola Neftali,
Hace un tiempo me hice un ejemplito con sockets, pero ya no me acuerdo bien de como lo hice. Por otra parte no encuentro los ejemplos que me comentas (uso BDS2006).
Para empezar simplemente estoy creando una conexion e intento enviar datos del servidor al cliente, pero no lo consigo. La conexión sí que se realiza, pero después no sé por qué no consigo leer los datos que supuestamente estoy enviando al cliente. Me podrías poner un ejemplito simplemente con la lectura/escritura de un cliente/servidor??? De ahí podría partir bien creo
Gracias!!!
__________________
"Patientia et constantia taelecum"
Responder Con Cita
  #4  
Antiguo 25-11-2008
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
A ver, he buscado el primer ejemplillo que tenía a mano y en ese en concreto utilizo esta función:

Código Delphi [-]
//: Permite enviar un comando a un Socket.
function SendCommand(ASocket: TCustomWinSocket; ACommand:  TSocketCommand;
                     AParams: array of string):Boolean;
var
  Str, StrParams:String;
  i:Integer;
begin

  // Por defecto...
  Result := False;
  StrParams := '';

  // Está activo?
  if (ASocket.Connected) then begin

    Debug.LogSocket('Enviando comando: ' + SocketCommandToStr(ACommand));

    // Recorrido
    for i := Low(AParams) to High(AParams) do begin
      StrParams := StrParams + Aparams[i] + CHAR_MESSAGE_SEP;
      Debug.LogSocket('  ' + Aparams[i]);
    end;

    // enviar comando...
    Str := SocketCommandToStr(ACommand);
    // Añadir parametros
    Str := Str + StrParams;
    // enviar
    ASocket.SendText(Str);
    Result := True;
  end;
end;

A parte de las líneas de Debug (que es para una herramienta interna) y el SocketCommandToStr (que lo único que hace en convertir un enumerado en String), como ves básicamente lo que hago es usar:

ASocket.SendText(Str)
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #5  
Antiguo 16-12-2008
Delfino Delfino is offline
Miembro
 
Registrado: jul 2003
Ubicación: Madrid
Posts: 974
Poder: 21
Delfino Va por buen camino
En este caso el cliente tiene q ser un TIdCmdTCPClient:
Código Delphi [-]
  var I: Integer;
      Clients: TList;
begin
 Clients := TCPServer.Contexts.LockList;
 try
 for i := 0 to Clients - 1 do
  TIdContext(Clients[i]).Connection.IOHandler.WriteLn(command);
 finally
  TCPServer.Contexts.UnlockList;
 end;
end;
En los clientes haces uso del evento OnCommand de cada commando creado para el TIdCmdTCPClient..
__________________
¿Microsoft? No, gracias..
Responder Con Cita
  #6  
Antiguo 29-01-2009
vejerf vejerf is offline
Miembro
 
Registrado: ene 2007
Posts: 206
Poder: 18
vejerf Va por buen camino
Hola, tras un tiempo estoy recuperando una cosilla que dejé planteada por motivos de trabajo. Ahora necesito recuperar esto. La cosa es que quiero comunicarme con un servidor (q tb estoy implementando) y que el servidor pueda enviar comandos al cliente tb. Para ello veo que se puede usar el componente TIdCmdTCPClient, pero no sé como usarlo. Alguien tiene un ejemplo simple de lectura de comandos por parte del cliente o sabe donde encontrarlo? He buscado ejemplos de las Indy, pero no teng de este componente.
Gracias!!!
__________________
"Patientia et constantia taelecum"
Responder Con Cita
Respuesta



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
Ayuda DBF Cliente/Servidor cmm07 Varios 1 31-12-2007 02:53:53
Enviar cadena de caracteres de cliente a servidor (Sockets) david duarte Providers 5 20-08-2007 20:28:56
Aplicación cliente/servidor usando Sockets Genner Varios 1 18-11-2006 10:54:14
Ayuda para Cliente/Servidor rruffino Conexión con bases de datos 3 17-12-2004 17:35:48
Aplicacion cliente/servidor. Ayuda please!!!!!! gorsan Conexión con bases de datos 2 17-06-2003 19:45:35


La franja horaria es GMT +2. Ahora son las 10:30:59.


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