Решён
Как запустить программу через определенный порт?

Денис Воганов Python
3.6k
5

Нужно чтобы моя программа слушала конкретный порт, например 8080. Пишу на Python простой веб-сервер. Как указать порт при запуске?

Или имеется ввиду что то другое когда говорят "запустить через порт"?

Решение
23
Участник • 4 ответа

Зависит от того что используешь.

Встроенный http.server:

python -m http.server 8080

Flask:

app.run(host='0.0.0.0', port=8080)

Сырые сокеты:

import socket

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('0.0.0.0', 8080))
s.listen(1)

Порт указывается при создании сокета или при запуске сервера. Никакой магии.

Аватар Денис Воганов

Работает, спасибо! Использую Flask, просто не знал про параметр port.

15
Участник • 1 ответ

Уточни - тебе нужно:
a) чтобы твой сервер слушал порт 8080 (входящие подключения)
b) чтобы твой клиент подключался к чужому серверу через порт 8080 (исходящие подключения)
c) чтобы исходящие подключения твоей программы шли через конкретный локальный порт

Это три разные задачи.

18
Эксперт • 4 ответа

Если порт занят другой программой - получишь ошибку Address already in use. Проверяй через netstat -tlnp | grep 8080 какой процесс висит на порту.

9
Участник • 3 ответа

на винде порты ниже 1024 требуют админских прав. если хочешь 80 порт - запускай от админа или используй что то выше типа 8080

21
Участник • 3 ответа

Если делаешь для прода - не забудь про host='0.0.0.0'. По дефолту Flask биндится на 127.0.0.1 и снаружи недоступен. Потратил полдня дебажа когда первый раз деплоил)

Написать ответ

Премодерация гостей

Вы отвечаете как гость. Ваш ответ будет скрыт до проверки модератором. Чтобы ответ появился сразу и вы получали репутацию — войдите в аккаунт.

Будьте вежливы и соблюдайте правила платформы.