PDA

Ver la Versión Completa : Sockets en Delphi 7?


coolfrog
10-11-2005, 04:52:48
hola que tal, quisiera saber como puedo establecer una comunicacion entre dos maquinas con sockets en Delphi7.
Ya trabaje con sockets antes en java y ahora que lo quiero intentar en Delphi no me funciona bien.
Los Componentes que uso son los que estan en la paleta de Internet , el TcpServer y el TcpClient.Lo que queria hacer en principio es que un cliente se conecte al servidor y en el servidor que se vean los mensajes que llega del cliente y al mismo tiempo que el servidor devuelva los mensajes al cliente.
Baje algunos ejemplos de internet pero todos son con versiones mas antiguas de delphi , delphi5 delphi3 y los eventos o los componentes no son los mismos por eso no me puedo guiar bien.
Alguien que me pueda ayudar porfavor.

Rabata
10-11-2005, 12:16:34
yo he utilizado estos componentes y me funcina bien, pero a lo mejor deberias mirar los indy (Internet Direct), pero de todas formas hay un ejemplo bastante bueno de estos 2 componentes an las demo de delphi, es una sobre un chat kreo k estaba en demos/internet/chat

Espetro te sirva....

coolfrog
13-11-2005, 03:29:35
Ya habia visto el ejemplo de delphi7 , es un chat o algo asi, la cosa es que ese me confunde, por que en el mismo archivo utilizan un tcpclient y un server y lo que yo sabia es que un cliente esta en una maquina y el server en otra , no los dos en la misma maquina, eso no tiene sentido para mi.
el servidor sirve para que se conecten desde otras maquinas no es cierto?
y ahora si coloco el componente TCPclient en el mismo archivo del TCPserver
entonces ahi que hago?
ademas no estan algunos eventos que habian en versiones anteriores para el TCPserver por ejemplo , onReadClient o algo asi.
el server tiene un metodo que es onReceive() pero no se como implementarlo o en que parte colocarlo. No esta en la paleta de eventos, y deberia estar.
Tambien hay otro procedimiente que es onListening(), y bueno nunca entra ahi aunque este escuchando, en otras versiones anteriores era onListen() y creo que funcionaba.
Alguien que pueda aclararme con mas detalle , por fa.

[Gunman]
13-11-2005, 11:04:44
Te explico, el ejemplo lleva un TCPClient y un TCPServer para que cualquier usuario se pueda connectar a ti y tu a cualquier usuario, me explico? Si el ejemplo no tuviese un TCPServer, entonces, sólo te podrias conectar al servidor y no podrias mandar mensajes a otros usuarios, sólo al servidor.
No sé si me explico correctamente, pero el ejemplo no está orientado a elaborar un chat como el IRC o el Messenger, sino un chat Usuario-Usuario. Si tu inicias la conexión te conectarás al servidor del otro usuario, en este caso el TCPServer no sirve para nada, pero si el otro usuario inicia la conexión, él se conectará a tu servidor, entonces es necesario tener en el programa un TCPClient (para iniciar la conexión) y un TCPServer (para cuando otro usuario inicia la conexión).
Si quieres hacer un chat multiusuario, debes planteartelo de otra forma, el ejemplo no te sirve, o al menos no te sirve al 100%.
En cuanto a los eventos que citas, te he de confesar que nunca he usado esos componentes, por lo que no te puedo responder. Para elaborar un ejemplo de Chat (http://gftpklient.sourceforge.net/gcorp/projects/gsockchat20.php) que hize hace tiempo yo use otros componentes que lleva por defecto el Delphi 6 (también los lleva el Delphi 7, pero has de instalarlos manualmente). Los componentes son los ScktComp, para instalarlos debes añadir a la paleta de componentes el dclsockets70.bpl que se encuentra en la carpeta Bin del Delphi.

PD: Se me olvidó decirte que los Indy también llevan algun componente que te puede servir, que seguramente sea mejor que los citados anteriormente: son el IdTCPClient y el IdTCPServer.

coolfrog
14-11-2005, 16:20:01
cuando te refieres a usuario a usuario quieres decir como un privado?.
solo entre dos personas?
Como el messenger?.
yo hice un chat en java y no necesite un server y un cliente en cada lado.
Solo un server que escuchara las peticiones de un cliente y cuando recibia mensajes le rebotaba a todos los clientes.
Esto lo hacia el server.
Quiero hacer algo asi en Delphi.
Si quieren ver de lo que hablo en java . mi chat que no esta terminado esta en esta direccion.
http://parti.shinranet.com/chat2.zip
http://parti.shinranet.com/chat3.rar