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.