Вопрос

я ищу http://docs.python.org/library/socketserver.html чтобы попытаться обрабатывать асинхронные запросы с помощью сервера сокетов в Python.В самом низу есть пример, но он не имеет смысла.В нем говорится, что вы используете порт 0, который назначает произвольный неиспользуемый порт.Но как узнать, какой порт использовать для клиента, если они не находятся в одной программе?Я не совсем понимаю, как сделать это полезным.

Это было полезно?

Решение

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

Другие советы

В приведенном вами примере они извлекают порт:

# Port 0 means to select an arbitrary unused port
HOST, PORT = "localhost", 0

server = ThreadedTCPServer((HOST, PORT), ThreadedTCPRequestHandler)
ip, port = server.server_address

Однако вам действительно стоит заглянуть на сайт www.twistedmatrix.com, если вы серьезно относитесь к написанию асинхронной обработки :)

Вам необходимо получить порт, назначенный socketserver однажды bind готово:в данном случае это, вероятно, пройдет через ip, port = server.server_address.

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

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

server = ThreadedTCPServer((HOST, 0), ThreadedTCPRequestHandler)
ip, port = server.server_address

...

client(ip, port, "Hello World 1")

Значение PORT 0 говорит: «Мне не важно, какой это номер порта», поэтому значение server_address port значение присваивается вызовом ThreadedTCPServer().Это не ноль.Позже вы пройдете это port ценность для клиента, который его использует.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top