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;
function EnUso(Puerto: Integer): Boolean;
var
WSADATA: TWSADATA;
ServerSocket: TSocket;
LocalAddr: TSockaddr;
begin
Result:= TRUE;
if WSAStartup(MAKEWORD(1, 1), WSADATA) = 0 then
try
ServerSocket := socket(AF_INET, SOCK_STREAM, IPPROTO_IP);
if ServerSocket <> INVALID_SOCKET then
begin
with LocalAddr do
begin
sin_family := AF_INET;
sin_port := htons(Puerto);
sin_addr.s_addr := htonl(INADDR_ANY);
end;
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.