Я новичок в области сокетов и в последнее время пытаюсь создать приложение для терминального чата с этим. У меня все еще проблемы с пониманием блокировок и выбора функций
"Это код, который я взял с веб-сайта, с которого я читаю, и в коде, если в данных ничего нет, как это означает, что сокет был отключен, и, пожалуйста, также объясните, что влияет на блокировку набора в сервер или клиент. Я где-то читал, что блокировка набора позволяет перейти, если данные не были полностью получены, я не совсем удовлетворен объяснением. Пожалуйста, объясните простыми словами "
import select
import socket
import sys
import Queue
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.setblocking(0)
server_address = ('localhost', 10000)
server.bind(server_address)
server.listen(5)
inputs = [ server ]
outputs = [ ]
message_queues = {}
while inputs:
readable, writable, exceptional = select.select(inputs, outputs, inputs)
for s in readable:
if s is server:
connection, client_address = s.accept()
connection.setblocking(0)
inputs.append(connection)
message_queues[connection] = Queue.Queue()
else:
data = s.recv(1024)
if data:
message_queues[s].put(data)
if s not in outputs:
outputs.append(s)
else:
if s in outputs:
outputs.remove(s)
inputs.remove(s)
s.close()