Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-11-2009
marareta marareta is offline
Miembro
 
Registrado: ago 2008
Posts: 33
Poder: 0
marareta Va por buen camino
sockets en cliente servidor

buenas amigos de club delphi, aqui de nuevo molestandolos, saben, tengo 2 aplicaciones, una cliente y otra servidor, y con ellas manejo sockets, lo que estoy haciendo es que por medio de una aplicacion me conecto por medio de sockets a la otra y le doy la orden de que se bloquee el administrador de tareas, el escritorio y la barra de tareas, abriendo las 2 aplicaciones en mi compu y ejecutandolas al mismo tiempo si me obedecen y se conectan correctamente, el problema es cuando las tengo en diferente computadora, no se si sea que tengo equivocados los valores del clientsocket y del serversocket.
Los valores del client socket son:
active: true
address:127.0.0.1 (aqui la verdad no se cual ip poner)
client type: ctNonBlocking
port: 4141 (lo tengo exactamente igual en el server socket)

y los valores en el serversocket son:
active: true
port:4141
server type: stNonBlocking

no se si tenga algun error aqui.
ahora les pongo el codigo de las aplicaciones:
en la aplicacion principal que es donde tengo el clientsocket y mando bloquear a la otra aplicacion tengo el siguiente codigo, que lo tengo funcionando con radiobuttons:

Código Delphi [-]
 
procedure TMenuPrincipal.RadioButton1Click(Sender: TObject);
begin
clientsocket1.socket.SendText('1');
end;
procedure TMenuPrincipal.RadioButton2Click(Sender: TObject);
begin
clientsocket1.socket.SendText('2');
end;
procedure TMenuPrincipal.RadioButton3Click(Sender: TObject);
begin
clientsocket1.socket.SendText('3');
end;
procedure TMenuPrincipal.RadioButton4Click(Sender: TObject);
begin
clientsocket1.socket.SendText('4');

lo que hago aqui es mandarle al serversocket un numero y cuando lo reciba va a ejecutar un case, que es el siguiente.
Este es el codigo del server socket en la propiedad onclientread:

Código Delphi [-]
 
procedure TMenuPrincipal.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
  var
  reg: TRegistry;
  begin
    case (strtoint(Socket.ReceiveText)) of
      1:   begin
            label1.caption:='El administrador de tareas está desactivado';
            reg := TRegistry.Create;
            reg.RootKey := HKEY_CURRENT_USER;
            reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Policies\System', True);
            reg.WriteString('DisableTaskMgr', '1');
            reg.CloseKey;
            reg.Free;
           end;
      2:   begin
            label1.caption:='El administrador de tareas está activado';
            reg := TRegistry.Create;
            reg.RootKey := HKEY_CURRENT_USER;
            reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Policies\System', True);
            reg.DeleteValue('DisableTaskMgr');
            reg.CloseKey;
            reg.Free;
           end;
      3:   begin
            timer1.Enabled:=true;
            label2.caption:='El barra de tareas y el escritorio están ' +
              'activados';
           end;
      4:   
           begin
              label2.caption:='El barra de tareas y el escritorio están ' +
              'desactivados';
              Timer1.Enabled:= false;
              ShellExecute(MenuPrincipal.Handle,nil,('explorer.exe'),'','',SW_HIDE);
              registro(Hkey_Current_User, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\',
                                'DisableTaskMgr',ParamStr(1));
           end;
 
    end;
end;


las opciones 3 y 4 en el case utilizan un timer, el codigo es el siguiente:
Código Delphi [-]
procedure TMenuPrincipal.Timer1Timer(Sender: TObject);
begin
//Con Shellexecute cerramos el proceso "explorer" osea el explorador de windows
   ShellExecute(Handle, nil, 'tskill', 'explorer', nil, sw_hide);
   //Aquí accedemos al registro y bloqueamos al acceso al TaskMgr osea el (ctrl+alt+supr)
   registro(Hkey_Current_User, 'SOFTWARE\Microsoft\Windows    \CurrentVersion ' +
     'Policies\System\', 'DisableTaskMgr',IntToStr(1));
end;

como ya les comente mi verdadero problema esta en la conexion de los sockets, si me pudieran ayudar lo antes posible se los agradeceria mucho
un saludo
Responder Con Cita
  #2  
Antiguo 16-12-2009
Alzheimer Alzheimer is offline
Miembro
 
Registrado: mar 2009
Posts: 16
Poder: 0
Alzheimer Va por buen camino
estas trabajando directamente con los objetos sockets....

te ahorrarias mucho kodigo y problemas de korreccion de kodigo si utilizaras los TIdTCP de INDY o simplemente los TTCP de la paleta internet.

son mucho mas faciles de usar.
Responder Con Cita
  #3  
Antiguo 16-12-2009
sergiovalp sergiovalp is offline
Registrado
 
Registrado: may 2007
Posts: 9
Poder: 0
sergiovalp Va por buen camino
Te recomiendo que en la aplicación cliente pongas un edit para escribir ahi en tiempo de ejecucion la direccion IP de la maquina servidor.

luego pone un boton conectar que le pasará esta IP al socket cliente, y desactivas y activas el socket.

La IP que tienes que poner en el cliente es la IP del servidor.

no uses address, basta con usar la propiedad host:

SocketCliente.active:= false;
SocketCliente.Host := 192.168.1.50 (IP de tu servidor)
SocketCliente.Port := 4141
SocketCliente.active:= true;


saludos
Sergio
chile
Responder Con Cita
Respuesta



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
app cliente-servidor, bd....???? akdclaudio Varios 4 22-04-2009 23:31:36
Cliente -Servidor. REHome .NET 2 24-03-2009 07:51:01
Ayuda con cliente/servidor (sockets) vejerf Internet 5 29-01-2009 13:05:12
Enviar cadena de caracteres de cliente a servidor (Sockets) david duarte Providers 5 20-08-2007 20:28:56
Aplicación cliente/servidor usando Sockets Genner Varios 1 18-11-2006 10:54:14


La franja horaria es GMT +2. Ahora son las 19:13:18.


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