Ver Mensaje Individual
  #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
Reputación: 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