Unless you register your port numbers with IANA, other programs may try to bind to the same port (it may already be in use by another application). Even if you registered your port numbers, other programs that don't heed the standards may still try to bind to the same port.
Since you require a large number of ports and a non-specific number of ports, you probably will not have any luck registering the ports with IANA.
Therefore, you should use ports >= 49151. The standard practice is to attempt to bind to a port, and if it's in use, the bind will fail. You catch the exception and try the next port.
There is nothing that lists free ports, but you can get in-use ports. Ports range from 1 to 65535, so you can figure out the list of free ports with the list of in-use ports. I find that quite often, the list of in-use ports will show false positives. Eg. ports may show as in use that aren't actually in use any more, but eventually they clear up over time.
So, if you need blocks of free ports, you can derive that list from the in-use ports.
Your server may wish to host the list of ports that it's using via a web server on the known port 80. Client/server communication relies on having at least one known port that the client can use to connect to the server.