Club Delphi  
    FTP   CCD     Enlaces   Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Desplegado
  #1  
Antiguo 17-12-2006
chvc chvc is offline
Registrado
 
Registrado: dic 2006
Posts: 2
chvc Va por buen camino
Post como crear un chat en delphi

Hola a todos, lo que pasa es que nesesito crear un a aplicacion que lleve un chat donde se puedan estar un promedio de 300 personas en linea con delphi 7 y con su respectiva lista donde aparecen los conectados, y me gustaria saber que componentes me pueden servir para poder realizarlo. de antemano muchas gracias
Responder Con Cita
  #2  
Antiguo 17-12-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
seoane Va por buen camino
Si no me equivoco con el propio delphi 7 te viene una demostración de como realizar un chat usando sockets. Compruebalo ....

De todas formas yo te sugiero otra idea. No se si el chat que tienes que hacer tiene que realizarse de una manera determinada (un trabajo para clase) o puedes utilizar la que tu prefieras. Si es este ultimo caso te propongo realizar el chat utilizando un método llamado "http polling". Este se basa en que el servidor mantiene una lista con todos los mensajes que aparecen en la conversación y los clientes a intervalos regulares se conectan al servidor por http y bajan los mensajes nuevos que han aparecido. De la misma forma si quieren publicar un mensaje envían el mensaje usando el método Post o Get del protocolo http.

Algunos messenger ya implementan este sistema, sobre todo porque puede atravesar un proxy http sin problemas, pero suelen utilizar protocolos bastante complejos. Puedes usar alguno de esos protocolos, o podemos pensar en uno mas sencillito. Así utilizando los componentes Indy, en el servidor podríamos usar tidHttpServer y en los clientes tidHttpClient, y no tendremos que meternos a manejar sockets, que pueden ser un dolor de cabeza

No se que te parece la idea
Responder Con Cita
  #3  
Antiguo 17-12-2006
chvc chvc is offline
Registrado
 
Registrado: dic 2006
Posts: 2
chvc Va por buen camino
el metodo que me acabas de decir de tidHttpClient y su tidHttpServer me suena muy bien, aunque la verdad es la primera vez que escucho mencionar esos dos componentes jejeje

sera que puedes darme algun sitio web que tenga ejemplos acerca de ellos?
Responder Con Cita
  #4  
Antiguo 17-12-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 11.841
dec Va camino a la fama
Hola,

Echa un vistazo a los componentes Indy. Si descargas "The 'old' Indy 9 demos" de la página de ejemplos encontrarás una carpeta de nombre "Chat". Creo que puede darte alguna idea por lo menos.
__________________
David Esperalta
www.davidesperalta.com
Responder Con Cita
  #5  
Antiguo 17-12-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
seoane Va por buen camino
Cita:
Empezado por chvc
el metodo que me acabas de decir de tidHttpClient y su tidHttpServer me suena muy bien, aunque la verdad es la primera vez que escucho mencionar esos dos componentes jejeje

sera que puedes darme algun sitio web que tenga ejemplos acerca de ellos?
Los componentes Indy vienen incluidos con el Delphi 7, buscalos en la paleta de componentes. Aunque también puedes bajarte su ultima versión desde su propia pagina

http://www.indyproject.org/Sockets/index.en.aspx

en la que también encontraras algún ejemplo. También encontraras mucha información en los foros sobre estos componentes, son muy conocidos y utilizados.

Y ya por último, te dejo una idea, que quizá es demasiado para lo que tu necesitas. Seguir usando http, pero subir un nivel mas y usar xml-rpc. Este protocolo nos permite ejecutar procedimientos remotos, básicamente definiríamos 3 funciones ("MandarMensaje", "RecibirMensajes", "ListarUsuarios") que nuestro cliente ejecutaría sobre el servidor. Esto que suena muy complicado, resulta ser muy sencillo. Es un método similar al que uso nuestro amigo dec para crear la API de su sitio web loturak, sobre la que ya hablamos en este otro hilo . En ese hilo dec nos habla sobre unos componentes que implementan el protocolo xml-rpc para delphi. Entre otras ventajas, el propio componente se encargaría de toda la comunicación, y además mas adelante tendríamos la posibilidad de montar el servidor usando php, que puede manejar xml-rpc sin problemas.

Bueno, ya dije que esta ultima idea quizá era demasiado complicada. Pero piensatelo, mientras tanto familiarizate con los componentes Indy y cuando sepas manejarlos, pensaremos como puedes usarlos en tu proyecto de chat.
Responder Con Cita
  #6  
Antiguo 21-12-2006
FlorErf FlorErf is offline
Registrado
 
Registrado: dic 2006
Posts: 2
FlorErf Va por buen camino
Aqui te va el chat para la cantidad de personas que quieras

Ahora este chat es medio primitivo y para una Local NetWork, la verdad esta compuesto por una aplicacion que es el servidor y otra que es el cliente.
Tambien utilizo los componentes ClientSocket y ServerSocket, que si los buscas en el delphi 7 no los vas a encontrar porque este paquete hay que instalarlos.
Instalar ClientSocket y ClientServer en delphi 7
1- Abres el delphi, Menú component / install Packages / add

Buscan en Archivos de Programas / Borland / Delphi 7/ Bin / dclsockets70.bpl

este paquete se instala con ayuda y todo, dentro de la paleta Internet.

Entoces a trabajar:

Empesemos por la amplicacion cliente:
Antes de empesar:
las conexiones de red si no me equivoco y si lo hago porfavor rectificar, se conectan por conextion que se llaman socket es como un hilo, y estos salen por los puertos de TCP/Ip que pueden ser cualquiera, necesitamos evitar conectarnos por los puertos estandar como los de htto, ftp, POP de correo, etc, los componetes ClientSocket y ServerSocket tienen una propiedad llamada Port, que este es la que dice por el puerto que se van a hacer las trasnferencias de datos, lo que, el clientsocket y el serversocket tienen que tener en esta propiedad el mismo puerto como el 1050, ejemplo y es el que bamos a utilizar. asi que ponte este numero en la propiedad port del cliente y despues en el del servidor.

Insercion de componentes:
1- StatusBar, con la propiedad ALing en Albutton. Paleta Win32.
2- Memo1, con la propiedad alin igual que el statusbar, Paleta Standar.
3- Spliter, con la propiedad alin igual que el statusbar, paleta additional.
4- Memo2, con la propiedad aling AlClient, Paleta Standar.
5- Panel, con a propiedad aling alTop. Agregas una panel a esta barra dando sobre ella doble clic y en el boton add.
6- Label, Propiedad Caption = 'Conectar a: '
7-
Edit1, borras el texo en la propiedad de mismo nombre.
8- Boton, Caption = 'Concetar / Desconectar'
9-
Insertas el ClientSocket, paleta Internet.

Programacion de Eventos:
1- Genera un evento Onclic para el Boton con el siguiente codigo.

if ClientSocket1.Active=true
then ClientSocket1.Active := False
else begin
ClientSocket1.Host := Edit1.Text;
ClientSocket1.Active := True;
end;
Nota: aqui el boton pregunta si el cliente esta activado, es decir en busqueda de servidores y conectados a ellos, si lo esta lo desactiva y si esta dasactivado le dice a que maquina se va a conectar y lo activa para que se conecte.
2- Genera un Evento KeyDown Para el memo1 con el codigo.

if Key = VK_Return
then ClientSocket1.Socket.SendText(Memo1.Lines[Memo1.Lines.Count-1]);

Nota: bueno esta linea esta casi que en spanish solo que, el cliente tiene una metodo que se llama socket este trabaja directo sobre la conexion establesida por el cliente y el servidor, por esta se pueden recivir datos y mandar datos como senttext()3- Genera un evento para el ClientSocketRed con el codigo

Memo2.Lines.Add(Socket.ReceiveText);

este recibe el texto que manda el server.
Ahora bamos a general codigo para el estado de la conexcion.
4- Genera evento para ClientSocket1Connect con el codigo

StatusBar1.Panels[0].Text :='Me conecte a '+ClientSocket1.Host;

nos informa a que maquina se conecto.
4- evento para el ClientSocket1Disconnect con el codigo

StatusBar1.Panels[0].Text :='Me desconecte';

informa cuando se ha desconectado
5- evento para ClientSocket1Error con el codigo

StatusBar1.Panels[0].Text :='No me puedo conectar con '+ClientSocket1.Host;
ErrorCode := 0;

informa cuando no se puede conectar al servidor.

Bueno hasta aqui con el cliente.

Programacion del Servidor:

Nota: agraga los mismos componentes y sus propiedades en la aplicacion servidor solo que esta vez con el componete serversocket y sin el edit, y el boton con el captio = activar / dasactivar.
REcuerda la propiedad port. del serversocket
Programacion de eventos:
1- Genera evento para el onclic del boton con el codigo

If ServerSocket1.Active = true
then begin
ServerSocket1.Active := false;
StatusBar1.Panels[0].Text:='Desactivado el Servidor';
end
Else Begin
serverSocket1.Active:=true;
StatusBar1.Panels[0].Text:='Activado el Servidor';
end;

esto dasactiva el server si esta acitvado y lo informa al statusbar y biseversa. Activar, esto hace que le server este a la escucha de peticiones de los clientes para que pudan conectarce.
2- Genera un evento para el Memo1 keydonw con el codigo
[i]
Var
i:Integer;
begin
If (key = vk_return) and (ServerSocket1.Socket.Connected=true)
then Begin
for i:=0 to ServerSocket1.Socket.ActiveConnections-1 do
serverSocket1.Socket.Connections.SendText(Memo1.Lines[Memo1.Lines.Count-1]);
Memo2.Lines.Add(Memo1.Lines[Memo1.Lines.count-1]);
end;

esto envia el texto escrito a todos los clientes que esten conectado a server y se lo manda a el mismo para que sea visualizado en la conversacion.
3- genera un evento para ServerSocket1 sobre ClientRead con el codigo
[i]
Var
i:Integer;
Texto:string;
begin

Texto:=Socket.ReceiveText;
Memo2.Lines.Add(texto);
for i:=0 to ServerSocket1.Socket.ActiveConnections-1 do
ServerSocket1.Socket.Connections.SendText(Texto);

esto captura el mensaje enviado por un cliente, lo muestra en pantalla en el server y lo manda para todos los clientes para haci seguir en la conversacion.
[i]ServerSocket1.Socket.Connections esto accede a todos los clientes que tiene el server, porque recuerda que tiene que conectar a muchas personas.
ServerSocket1.Socket.ActiveConnections-1 meda la cantidad de clientes que hay conectados, empesando por el primero que tiene el indise 0.

-- general codigo para controlar el estado de la conexion.
4- genral evento para ServerSocket1 en el evento ClientConnect

StatusBar1.Panels[0].Text:='Se ha conectado '+ServerSocket1.Socket.LocalHost;

5- general evento para ServerSocket1 sobre ClientDisconnect con el codigo

StatusBar1.Panels[0].Text:='Se ha desconectado '+ServerSocket1.Socket.LocalHost;

6- general evento para ServerSocket1 sobre Listen

StatusBar1.Panels.Items[0].Text := 'Escuchando...';

bueno esto es todo lo que tengo que decirles, al que le sirva que lo pruebe y si no le sale algo y usted no lo pueda solucional o este yo equivocado o conosta usted una manera mejor porfavor de mostramela

me dirrecion es leonel06033@cfg.jovenclub.cu

espero que todo este bien saludos.
Responder Con Cita
  #7  
Antiguo 22-12-2006
Avatar de Maury Manosalva
Maury Manosalva Maury Manosalva is offline
Miembro
 
Registrado: ago 2005
Posts: 101
Maury Manosalva Va por buen camino
No entendi este pedazo en el chat

5- Panel, con a propiedad aling alTop. Agregas una panel a esta barra dando sobre ella doble clic y en el boton add.

no lo entendi, me lo puedes explicar.. mil gracias
Responder Con Cita
  #8  
Antiguo 22-12-2006
FlorErf FlorErf is offline
Registrado
 
Registrado: dic 2006
Posts: 2
FlorErf Va por buen camino
Aclaracion del tema 5- agregar un panel

mira amigo me confundi, disculpen, mira solo es agregar el panel y aliniarlo a altop, toda la parte de arriba de la form.

donde hay que agregar un panel nuevo es en el statusbar1, que en este se la da doble clic sobre el, sale una ventana y en esta hay una boton que se llama add, presionas sobre este y se agrega una nueva area donde se puede escribir que en esta es donde se pueden motrar los texto de notificaciones, o sino clikeas en el objet inspector en la propiedas panels.. esta propiedad es del statusbar1.

saludos y disculpen las molestias.
Responder Con Cita
  #9  
Antiguo 22-12-2006
Avatar de Maury Manosalva
Maury Manosalva Maury Manosalva is offline
Miembro
 
Registrado: ago 2005
Posts: 101
Maury Manosalva Va por buen camino
Thumbs up No me funciono el chat

Hola, aunque ya escribi al correo que dejaste, nuevamente lo digo por este medio, eme esta mostrando errores en el servidor, proble el cliente y funciona perfecto, pero no puedo probar hasta que el servidor este bien, y gracias por la respuesta a mi pregunta. muy gentil.

maury manosalva
Responder Con Cita
  #10  
Antiguo 30-12-2006
fide fide is offline
Miembro
 
Registrado: oct 2006
Posts: 331
fide Va por buen camino
hola

hola ami me llamo franklin y mi nick ak en el clubdelphi es fbueno, me gustara que me ayudases con mas informacion en esto si no te es molestia, eso te lo agradeceria mucho, mi correo es anamcw@infosol.gtm.sld.cu
soy cubano .
Responder Con Cita
  #11  
Antiguo 31-12-2006
fide fide is offline
Miembro
 
Registrado: oct 2006
Posts: 331
fide Va por buen camino
Lightbulb Chat en delphi 7

Hola, te puedo recomendar un componente que está en la pestaña IndyClients y se llama idIRCClient y es súper bueno para trabajar con el IRC. Solo nenecitas un servidor montado como el Unreal IRC o uno que crees tu mismo, ya que en la pestaña IndyServers está el IdIRCServer que te crea un servidor. Si quieres más detalles sobre esto, por favor no dudes en preguntarme.

Que pases un buen fin de año.
Responder Con Cita
Respuesta


Herramientas
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
Chat Delphi Caral Varios 0 07-09-2006 21:42:38
Un chat de voz en delphi? neto57 Varios 7 26-05-2006 19:44:55
Necesito un chat de voz en delphi neto57 Internet 1 25-05-2006 17:19:28
Chat en delphi ??? android_beat Varios 2 12-04-2005 01:43:37
Chat Web / Delphi cone220 Internet 3 05-09-2003 02:06:10


La franja horaria es GMT +2. Ahora son las 17:53:49.


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