Как мне начать прослушивание порта в протоколе TCP в определенном диапазоне ?

Например:

Проверяйте порты с 6001 по 7000, пока не найдете свободный
и начните слушать его, когда найдете.
когда кто-то еще пытается то же самое, он не может слушать тот же порт.

Спасибо.

-1
Tango_Chaser 10 Янв 2017 в 12:20
1
 – 
huse.ckr
10 Янв 2017 в 12:23
1
Вам просто понадобится это и для цикла
 – 
Lucifer
10 Янв 2017 в 12:53

1 ответ

Лучший ответ

Я нашел способ сделать это:

private static int initialPort = 6001; // initial port to search from

public static void StartServerTCP()
{
    bool serverSet = false;
    while (!serverSet && initialPort <= 7000)
    {
        try
        {
            Console.WriteLine(Dns.GetHostName() + ": (Server:TCP) Trying to setup server at port: {0} [TCP]", initialPort);

            serverSocket.Bind(new IPEndPoint(GetIP(), initialPort));
            serverSocket.Listen(0);
            serverSocket.BeginAccept(AcceptCallback, null);
            Console.ForegroundColor = ConsoleColor.Yellow;
            Console.WriteLine(Dns.GetHostName() + ": (Server:TCP) Server setup completed at port {0} [TCP]\n", initialPort);
            Console.ForegroundColor = ConsoleColor.Gray;
            serverSet = true;
        }
        catch (Exception)
        {
            Console.WriteLine("\n" + Dns.GetHostName() + ": (Server:TCP) Port <{0}> is busy, trying a different one\n", initialPort);
            initialPort++;
        }
    }
}
2
Tango_Chaser 14 Янв 2017 в 14:03