Ver Mensaje Individual
  #6  
Antiguo 21-12-2006
FlorErf FlorErf is offline
Registrado
 
Registrado: dic 2006
Posts: 2
Reputación: 0
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