Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   Cliente/Servidor de Mensajeria Instantania (https://www.clubdelphi.com/foros/showthread.php?t=64991)

fide_uci 13-11-2009 06:44:43

Cliente/Servidor de Mensajeria Instantania
 
Hola amigos.

La cosa es que necesito hacer un servidor de mensajeria instantania para poder chatiar con mi novia, que se encuentra en la misma red de area local. Pero lo que pasa que que es necesario que lo haga yo para facilitarle a ella las cosas ya que no sabe nada de nada, y ademas el programa debe tener ciertas caracteristicas que solo ella y yo usaremos. Gggg.

Bueno lo que necesito que me digan es mas o menos el procedimiento a seguir para implementar un servidor al cual se puedan conectar muchos clientes y resivir mensajes tantos publicos como provador.

Neftali [Germán.Estévez] 13-11-2009 11:24:26

Supongo que ya sabes que hay cientos de programas de este tipo. La mayoría gratuítos. Algunos de ellos en Delphi y con fuentes. Asummiendo que ya sabes esto y que aun así deseas hacer tu programa, te recomiendo que revises la carpeta de Demos que viene con Delphi, ya que allí tienes un ejemplo de un Chat.

Deberías revisar los componentes de las Indy para Cliente y Servidor.

fide_uci 13-11-2009 11:56:16

Bueno neftali ante todo muchas gracias por responder a mi pregunta. Es cierto todo eso que dices, pero no se si me vas a entender !

Nunca has querido hacer algo tu mismo desde 0, sin nada de nada, comenzandolo todo tu?
Esos es un deseo que tengo hace ya bastante tiempo y es sobre este tema.

He comenzado a trabajar usando los componentes de la Indy 9, el idTCPClient e idTCPServer respectivamente. Pero necesito que me den mas o menos la logica de como es que se hace esto.

Por ejemplo algo asi.

El Cliente se conecta.
El servidor envia el comando GetUserInfo.
El cliente recoje la informacion del usuario y se la envia al servidor.
bla bla bla....

Ya entiedes?
Estas cosas son las que me hacen falta, la logica de como hacerlo !
En realidad el mayor problema es para actualizar la lista de usuarios que hay en el servidor. Eso es lo que no he logrado hacer aun.

Neftali [Germán.Estévez] 13-11-2009 13:00:49

Cita:

Empezado por fide_uci (Mensaje 346513)
Nunca has querido hacer algo tu mismo desde 0, sin nada de nada, comenzandolo todo tu?
Esos es un deseo que tengo hace ya bastante tiempo y es sobre este tema.

Me ha pasado muchas veces. Sólo quería confirmar que realmente era así. ;)

Neftali [Germán.Estévez] 13-11-2009 13:05:53

Cita:

Empezado por fide_uci (Mensaje 346513)
He comenzado a trabajar usando los componentes de la Indy 9, el idTCPClient e idTCPServer respectivamente. Pero necesito que me den mas o menos la logica de como es que se hace esto.

Arranca el Servidor y realiza el Open.
Al arrancar los clientes realiza el Open.

Con eso ya tienes la conexión.
Programa el OnClientConnect y OnClientDisconnect para controlar los clientes conectados; Aquí puedes utilizar las propiedades RemoteHost y RemoteAddress (revisa qué valores tienen).
A partir de ahí se trata de ir añadiendo cosas.

Para enviar un texto desde un cliente utiliza el SendText.

Código Delphi [-]
    ClientSocket1.Socket.SendText(edtTexto.Text);

Y para recibirlo desde el Servidor programa los eventos ClientRead/ClientWrite (para ambas operaciones).

Espero que te sirva para empezar.
Un saludo.

duranguenze 13-11-2009 23:09:48

Hace ya varios años hice uno, pero en otro lenguaje, usando los indi te facilita bastante, no hay necesidad de tener un servidor por asi decirlo, creas un programa el cual haga el papel de cliente y de servidor, este lo pones a escuchar un puerto pre establecido, y le dices que cheque todas las terminales para ver si el puerto esta a la escucha, si lo esta entonces que se presente.

Dicho de otro modo, inicia el programa, pregunta a todas las terminales si esta activo, si no esta entonces se pone a escuchar, cuando hace la conexion crea un nuevo socket en un puerto que este disponible, y a travez de este se hace el dialogo entre las personas, el puerto que esta a la escucha o por donde le hablan solo es para hacer la conexion, aparte de este puerto se abren otros dos, uno para el dialogo entre las personas y otro para los comandos.

Espero que te sea sencilla la explicacion de manera general.

fide_uci 14-11-2009 06:24:03

Oye, yo no soy novato trabajando con la Indy. todo eso lo se. Pero te repito, mi principal problema radica en que no se como controlar todas las conexiones que van surgiendo a medida que se conectan mas clientes.

En el indyTCPDemo que trae la Indy 9 se ve que usan una Lista de Hilos, pero no tengo ni idea de como usarla. Me podrian dar mas ayuda pleasee?

Neftali [Germán.Estévez] 16-11-2009 13:31:22

Entonces es que a lo mejor no estás planteando las preguntas como debes. :mad:

Código Delphi [-]
var
  i:Integer;
  wSocket:TCustomWinSocket;
  str:string;
begin

  for i := 0 to (ServerSocket1.Socket.ActiveConnections - 1) do begin
    wSocket := ServerSocket1.Socket.Connections[i];

    Str := 'Host: ' + wSocket.RemoteHost + '  Adress: ' + wSocket.RemoteAddress +
           '  Port: ' + IntToStr(wSocket.RemotePort);
    MessageDlg(Str, mtInformation, [mbOK], 0);
  end;

fide_uci 16-11-2009 15:58:23

Ya entiendo. Pero ahi estas usando el TServerSocket y yo lo que uso es el idTCPServer.
Ya estoy avanzando bastante, asi que en cualquier momento te comento como voy adelantando. Esta quedando Cool !

Neftali [Germán.Estévez] 16-11-2009 16:01:15

Cita:

Empezado por fide_uci (Mensaje 346661)
Pero ahi estas usando el TServerSocket y yo lo que uso es el idTCPServer.

Perdón, se me escapó ese detalle (que ya habías comentado).

Alzheimer 17-11-2009 03:41:48

posible respuesta
 
perdonen la repeticion... mi konexion es pesima

Alzheimer 17-11-2009 03:44:44

1 Archivos Adjunto(s)
hola fide...
hace un tiempo hice un ejemplito k kon bastante mas pulidera kizas te sirva para lo k kieres hacer...> ***en lo k tienes problemas es en gestionar la lista de konexiones esto lo resuelve...*** aklaro, el TIdTelnet funciona kasi igual k el TIdTcp

aki te posteo el kodigo (tiene algunos errores todavia pero es solo la base. en realidad ya tengo un sistema asi funcionando k lo mande no hace mucho a un amigo alla en la UCI, esta integrado a una herramienta k se llama FantasticTool y es de libre distribucion y kopia...)
_____________________________________________________________-__


La franja horaria es GMT +2. Ahora son las 19:20:14.

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