Как я могу создать класс HttpListener на случайном порте в C#?

Как будто вы пытаетесь получить доступ к объекту, который является null. Рассмотрим ниже пример:

TypeA objA;

. В это время вы только что объявили этот объект, но не инициализировали или не инициализировали. И всякий раз, когда вы пытаетесь получить доступ к каким-либо свойствам или методам в нем, он будет генерировать NullPointerException, что имеет смысл.

См. Также этот пример:

String a = null;
System.out.println(a.toString()); // NullPointerException will be thrown
27
задан gturri 28 May 2014 в 08:22
поделиться

1 ответ

Как насчет чего-то вроде этого:

    static List<int> usedPorts = new List<int>();
    static Random r = new Random();

    public HttpListener CreateNewListener()
    {
        HttpListener mListener;
        int newPort = -1;
        while (true)
        {
            mListener = new HttpListener();
            newPort = r.Next(49152, 65535); // IANA suggests the range 49152 to 65535 for dynamic or private ports.
            if (usedPorts.Contains(newPort))
            {
                continue;
            }
            mListener.Prefixes.Add(string.Format("http://*:{0}/", newPort));
            try
            {
                mListener.Start();
            }
            catch
            {
                continue;
            }
            usedPorts.Add(newPort);
            break;
        }

        return mListener;
    }

я не уверен, как Вы нашли бы все порты, которые используются на той машине, но необходимо получить исключение, при попытке послушать на порте, который уже используется, в этом случае то метод просто выберет другой порт.

15
ответ дан lubos hasko 28 November 2019 в 04:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: