Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-08-2006
Avatar de Lautarox
Lautarox Lautarox is offline
Registrado
 
Registrado: jun 2006
Posts: 8
Poder: 0
Lautarox Va por buen camino
Arrow (Deplhi) Algunas Preguntas...

Wenazzz...
Tengo un par de preguntas... que estaria muy agradecido si me las solucionaran...
Como seria una sentencia if que diria si una procedure fue cumplida con exito?
Como podria saber si un port esta habierto? Cual seria el codigo?
No se si el post esta bien ubicado... si no perdonen.

Desde Ya Gracias...
Responder Con Cita
  #2  
Antiguo 12-08-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Eso depende de lo que entiendas tu por el éxito de un procedure, dado que un procedure, por definición, no devuelve valor alguno. ¿Podrías aclarar un poco mas este punto?.

En cuanto al "Port", si estamos hablando de sockets, y quieres saber si un puerto ya esta ocupado por otra aplicación, puedes hacerlo de varias maneras. Una es intentar usarlo tu, y si no puedes, es que esta siendo usado por otro.
Responder Con Cita
  #3  
Antiguo 12-08-2006
Avatar de Lautarox
Lautarox Lautarox is offline
Registrado
 
Registrado: jun 2006
Posts: 8
Poder: 0
Lautarox Va por buen camino
Quisiera que si un "proceso" del programa es realizado bien, cumpla otra cierta funcion.
Y sobre los ports, me podrias postear un codigo de mas o menos como seria probar si el port esta ocupado? Port TCP
Responder Con Cita
  #4  
Antiguo 12-08-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
En cuanto a la primera pregunta, tienes varias formas:

Si tienes que usar un procedure, deberá añadir un parámetro que se modifica según convenga. Creo que lo propio es usar una función; te dejo ambos ejemplos:

Código Delphi [-]

procedure Hazlo( var ObjetivoCumplido:Boolean);
begin
 // hacer todas las tareas

 if NoError then
   ObjetivoCumplido := true
 else
   ObjetivoCumplido := false;
end;

function HacerTarea :Boolean;
begin
  if noerror then 
    Result := true
  else 
   Result := false;
end;

procedure Preguntando;
var Cumplido:Boolean;

Cumplido := false;
Hazlo(cumplido);
if Cumplido then
  ShowMessage(' hizo bien la tarea')
else
  ShowMessage(' NO hizo bien la tarea');

cumplido := HacerTarea;
ShowMessage(BooltoStr(cumplido, true));

// Un código más elegante puede ser:
if HacerTarea then
begin
  // lo que sea
end;
end;
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #5  
Antiguo 12-08-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
Cita:
Empezado por Lautarox
Y sobre los ports, me podrias postear un codigo de mas o menos como seria probar si el port esta ocupado? Port TCP
Claro que puedo, pero eso depende de los componentes que quieras usar. si por ejemplo estas usando TServerSocket o TIdTCPServer de Indy podríamos utilizar algo como esto:
Código Delphi [-]
try
  ServerSocket.Active:= TRUE;
except
  ShowMessage('El puerto ya esta en uso');
end;

Si lo que quieres es encontrar un puerto libre, puedes usar algo como esto, que encuentra el primer puerto libre a partir del 1024:
Código Delphi [-]
ServerSocket.Port:= 1024;
While not ServerSocket.Active do
try
  ServerSocket.Active:= TRUE;
except
  ServerSocket.Port:= ServerSocket.Port + 1;
end;

Y si no quieres usar ningun componente puede utilizar esta función,que devuelve TRUE si el puerto esta en uso:
Código Delphi [-]
uses WinSock;       // Es importante añadir esto a las uses

function EnUso(Puerto: Integer): Boolean;
var
  WSADATA: TWSADATA;
  ServerSocket: TSocket;
  LocalAddr: TSockaddr;
begin
  Result:= TRUE;
  // Inicializamos Winsock
  if WSAStartup(MAKEWORD(1, 1), WSADATA) = 0 then
  try
    // Creamos el socket del servidor
    ServerSocket := socket(AF_INET, SOCK_STREAM, IPPROTO_IP);
    if ServerSocket <> INVALID_SOCKET then
    begin
      with LocalAddr do
      begin
        sin_family := AF_INET;
        // Aqui colocamos el puerto a usar
        sin_port := htons(Puerto);
        sin_addr.s_addr := htonl(INADDR_ANY);
      end;
      // Ponemos el socket a la escucha ...
      if bind(ServerSocket, LocalAddr, sizeof(LocalAddr)) <> SOCKET_ERROR then
        if listen(ServerSocket, SOMAXCONN) <> SOCKET_ERROR then
          Result:= FALSE;
      CloseSocket(ServerSocket);
    end;
  finally
    WSACleanup();
  end;
end;

Por ultimo, si lo que quieres es algo un poco mas potente que nos haga un listado con todos los puertos abiertos de nuestro equipo, como hace el comando "NetStat -a" puedes echarle un vistazo a este programa que publique hace unos dias aqui que es un clon del NetStat y esta echo en delphi.
Responder Con Cita
  #6  
Antiguo 12-08-2006
Avatar de Lautarox
Lautarox Lautarox is offline
Registrado
 
Registrado: jun 2006
Posts: 8
Poder: 0
Lautarox Va por buen camino
Me han sorprendido :O la verdad que me ayudaron muchisimo, les estoy muy agradecido; el proyecto que estoy haciendo es un port scanner q supuestamente scanearia los puertos de una determinada ip y si encuentra algun port que usa un troyano sale una alerta :P, es solo x seguridad por si alguna de esas pensas q estas infectado, siempre hay q darle un vistazo a los ports...
Alguna idea de como podria hacer que la procedure se haga muchas veces scaneando un diferente port hasta llegar a una variable maxima?

Última edición por Lautarox fecha: 12-08-2006 a las 16:28:06.
Responder Con Cita
  #7  
Antiguo 13-08-2006
nemesio nemesio is offline
Miembro
 
Registrado: nov 2005
Ubicación: Isla de Margarita, Venezuela
Posts: 377
Poder: 19
nemesio Va por buen camino
Utiliza un ciclo, y revisa los puertos con él.

Saludos
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
No se q pasa con mi deplhi jakuna OOP 1 22-04-2006 19:54:07
Conectas Deplhi con SQL Server Rodriguez Conexión con bases de datos 1 28-10-2005 23:18:09
TMediaPlayer... Algunas Preguntas de Utilidad para Todos Niko Varios 2 18-04-2005 21:02:42


La franja horaria es GMT +2. Ahora son las 19:24:28.


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