Ver Mensaje Individual
  #1  
Antiguo 19-10-2014
cmfab cmfab is offline
Miembro
 
Registrado: jun 2010
Posts: 421
Reputación: 15
cmfab Va por buen camino
Servidor DataSnap

Hola a todos, tengo un servidor DataSnap, sucede que la aplicación cliente cada cierto intervalo debe conprobar si existe este servidor en la IP y puerto determinados, para concocer esto uso la función siguiente:

Código Delphi [-]
function PortTCP_IsOpen(dwPort : Word; ipAddressStr:AnsiString) : boolean;
var
  client : sockaddr_in;
  sock : Integer;
  ret : Integer;
  wsdata : WSAData;
begin
  Result:=False;
  ret := WSAStartup($0002, wsdata); //Inicializa Winsock
  if ret<>0 then exit;

  try
   client.sin_family := AF_INET; //Establece el protocolo a usar en este caso (IPv4)
   client.sin_port := htons(dwPort);
   client.sin_addr.s_addr := inet_addr(PAnsiChar(ipAddressStr));
   sock :=socket(AF_INET, SOCK_STREAM, 0); //crea un socket
   Result:=connect(sock,client,SizeOf(client))=0; //Estable conexión con un socket
   finally
     WSACleanup;
   end;
end;

lo que me sucede es que cuando mido el consumo de memoria del servidor este aumenta considerablemente cuando el cliente usa esta función, no se si está quedando algún objeto por liberar en el algoritmo, pero no encuentro como bajar el consumo de memoria, o si existe otra manera de saber si está activo el servidor, na posibilidad sería hacer la conexión mediante el bloque try ... except, pero me gustaría poder depurar esta función que la uso en otras tareas y hacer que baje el consumo al comprobar la ip y puerto

Gracias e antemano a todos por las atenciones
Responder Con Cita