Как правильно настроить сервер сокетов Python - PullRequest
0 голосов
/ 14 ноября 2018

Я недавно начал изучать Python, но натолкнулся на вопрос.Почему мой цикл while True останавливается, когда я выполняю socket.accept ()

Мой код продолжает печатать 'HEY !!':

import socket


host = "0.0.0.0"  #<- Not the real port and ip, I have working ones...
port = 1234

s = socket.socket()
s.bind((host, port))
s.listen(5)

while True:

    print("HEY!!")

    '''
    connection, adress = s.accept()
    print("Got connection from: '" + str(adress[0]) + ":" + str(adress[1]) + "'")
    '''

Мой код, который печатает только HEY!!»один раз:

import socket


host = "0.0.0.0"  #<- Not the real port and ip, I have working ones...
port = 1234

s = socket.socket()
s.bind((host, port))
s.listen(5)

while True:

    print("HEY!!")

    connection, adress = s.accept()
    print("Got connection from: '" + str(adress[0]) + ":" + str(adress[1]) + "'")

И как я могу решить, что он продолжает печатать "ЭЙ !!"но также позволить сокету работать?

Спасибо за чтение!

ОБНОВЛЕНИЕ:
Сейчас оно работает, я использую многопоточность для его достижения.
У вас есть такая же проблема?-> Google: «Несколько циклов true пронизывают потоки Python»
Спасибо всем, кто мне помог!

1 Ответ

0 голосов
/ 14 ноября 2018

Почему мой цикл while True останавливается, когда я выполняю socket.accept ()

accept является операцией блокировки. Он ждет, пока клиент не подключится. Он продолжается после подключения клиента и возвращает сокет для нового клиентского подключения.

Мой код, который печатает только «ЭЙ !!» один раз:

Он напечатает HEY!! более одного раза, если клиенты подключатся к вашему серверу, и, таким образом, будет заблокирована accept.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...