Подтвердить что ты не робот

Как вы решаете, какой порт использовать?

Это немного субъективно, так как нет никаких правил, так сказать. Каждый раз, когда я создаю сервер, я думаю про себя: "Какой лучший порт использовать?" Я думаю, что ответ "Любой, если пользователь может его изменить". Итак, как все остальные решают, как выбрать порт по умолчанию? Лично мне нравится использовать что-то вроде 8000-something, если это связано с HTTP, и я заметил, что это довольно распространенная тенденция. Но что, если 8000 уже используется? Использовать 8001? Кажется, немного ad-hoc, и я полагаю, что это так.

Ясно, что я не первый, кто задал этот вопрос; IANA поддерживает список port numbers, который приводит меня к непризнанному диапазону (48620-49150). Думаю, мы действительно должны использовать их, но почему бы не сделать это больше программистов? Как вы решаете, что использовать; если бы все начали С# 1, тогда мы все будем использовать 48620.

4b9b3361

Ответ 1

Я думаю, что вы в значительной степени ответили на ваш вопрос настолько, насколько это возможно; на самом деле нет строгого правила, за которым вы можете следовать за пределами того, что вы сказали. Но в целом:

  • Посмотрите на список IANA и выберите порт, который не используется.
  • Выберите номер порта, который легко запомнить.
  • Не фиксируйте номер порта в коде. Некоторые другие продукты, возможно, выбрали тот же порт, что и вы, и вы никогда не знаете, когда вам придется сосуществовать на сервере, поэтому поместите номер порта в файл конфигурации где-нибудь, чтобы его можно было изменить без необходимости перекомпиляции. Возможность изменения номера порта также может быть полезна для прохождения через брандмауэры без необходимости их переконфигурации. (Вы можете всегда использовать выбранное значение по умолчанию, если файл конфигурации не существует.)
  • Существует аргумент, что вы не хотите выбирать что-то слишком высокое, поскольку вы можете столкнуться с диапазоном, используемым для эфемерных портов. Это не так, что вы получите это, но это сложная проблема для отладки, когда это произойдет.

(И если вы хотите получить подсказку для запоминания номеров портов, я однажды работал с тем, кто помнил номера портов, основанные на телефонных расширениях своих сотрудников.)

Ответ 2

Некоторые легко запоминающиеся и соответственно неуправляемые неназначенные (на IANA) порты:

27182 (e)

31415 (pi)

60221 (avagadro's)

Ответ 3

Во время тестирования... всегда порт # 666;)

Ответ 4

После быстрого поиска Google, чтобы убедиться в его ясности, я обычно выбираю несколько личных значений.

Ответ 5

Вы ответили на свой вопрос? Выберите любой неназначенный порт и разрешите пользователю его изменять.

Ответ 6

Как насчет:

defaultPort = (new Random()).Next(48620, 49150);

Ответ 7

Я предпочитаю этот способ: (следующий код для python)

#!/usr/bin/env python3
import random as R
r = R.SystemRandom()
print([r.randrange(1024, 65535) for x in range(4)])

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

Ответ 8

Я бы посоветовал никогда не использовать порт большого числа, например, 5 цифр, так как это может поразить некоторые другие процессы операционной системы и назначает порты Ephemeral. Из-за его ограничений вы начнете получать "Уже используемые ошибки".