var host: pHostEnt;
dwIP: DWORD;
sock: TSocket;
saddr: SOCKADDR_IN;
from_port, to_port, i, ret: integer;
begin
host := GetHostByName(pchar('
localhost'));
dwIP := htonl(integer(pointer(host^.h_addr^)^));
ZeroMemory(@saddr,sizeof(SOCKADDR_IN));
saddr.sin_family := AF_INET;
saddr.sin_addr.S_addr := htons(dwIP);
sock := socket(AF_INET, SOCK_STREAM, 0);
for i := from_port
to to_port
do begin
saddr.sin_port := ntohl(i);
ret := connect(sock, saddr, sizeof(saddr));
if ret = SOCKET_ERROR
do begin
// Closed
end
else begin
// Open
end;
end;
end;