Procurando porta disponível (sockets)

Estou fazendo um programa onde cada usuário vai utilizar de uma porta do computador (conexao via sockets), gostaria de saber se existe algum método de procurar portas que ainda não foram utilizadas