Consulta sobre Puertos y Sockets

Mi nombre es Rodrigo, y te cuento que soy nuevo en esto de la programación en delphi, pero me interesa mucho y estoy aprendiendo rapido. Te cuento que estoy haciendo un proyecto que es un Programa de Chat para redes Lan. No se si es buena mi idea, pero te comento que lo hice que sea cliente y servidor al mismo tiempo, es decir, no tengo otro programa servidor dentro de la red. Entonces mi duda es... Si de esta forma en la que estoy trabajando es posible que dicho programita se conecte con más de una maquina a la vez, porque de maquina a maquina anda perfecto, pero me gustaría que intervinieran más de una y no tengo muy en claro el tema de los puertos en los sockets. Bueno...
Respuesta
1
Para hacerlo cliente y servidor al mismo tiempo. Usaste dos componentes. ¿ClientSocket y ServerSocket?
Sabes. Yo use esas características de los socket para colocar un Servidor a una PC determinada, ese programa cliente esta escondido de un usuario común, solo se puede ver analizando el registro del sistema. Su función era crear publicidad, y poder usarlo de nexo cuando desde cualquier otra PC me conectaría a ella. Pero con la experiencia me di cuenta que tenia problemas con los IPs privados. No encontré forma. Así que cambien el concepto. Instalando un servidor en cualquier PC, este cada tiempo constante revisa si el cliente (el que porto yo) esta activo, si esta activo se realiza la conexión. Lo único que tenia que hacer es que mi cliente estuviera en una Pc con IP Publico. Eso me aseguro instalar clientes en PCs con IP públicos y privados y tener el acceso que se me antoja.
Ahora para un Chat, podrías primero ordenar tus ideas con un organigrama y algunos flujos para poder saber como vas a atacar. Un componente ServerSocket también envía información, como recibe. Y me parece que tendrás que ver un poco el tema de hilos. Ahora mirando alto. Te doy una idea. Tendrás un programa "Servidor" en una PC con Ip publico. Allí se conectaran los programas "Clientes". El programa Servidor contara con una base de datos con campos como Nombre de usuario, etc. Así cada vez que algún cliente se conecte al servidor, este en su base de datos en un campo "activo" lo pondrá a True, así otro que ingrese recibirá información del servidor de quienes están activos y quienes no.
Todo lo que el cliente escriba a otro cliente en verdad lo hace al servidor, el paquese seria "IP:texto", así Servidor sabrá a que IP reenviar dicho texto. Aquí en donde juegan los hilos. Pues deben ser muy dinámicos, crearse por cada evento OnRead y Destruiré después de enviar mensaje. Esto te asegura libertad para cuando lo quieras implementar con opciones como enviar archivo no se queden dormidos los demás clientes.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas