Я кодирую сервер сокетов Python, чтобы при подключении вы входили в систему с именем пользователя и паролем, разделенными знаком «:», когда вы говорите что-либо на подключенном сервере, оно отправляет сообщение всем остальным, используя функцию «Broadcast ()»
Но когда я пытаюсь войти в систему, он не говорит «Добро пожаловать», что и должно быть.Он просто ничего не делает, он не может войти в систему.
Я использую PuTTY для подключения к нему.
Код:
import socket
import threading
from thread import start_new_thread
connect = ""
conport = 8080
clients = []
def client_thread(conn):
fd = open("login.txt", "r")
def username(conn, prefix="Username: "):
conn.send(prefix)
return conn.recv(2048)
def password(conn, prefix="Password: "):
conn.send(prefix)
return conn.recv(2048)
username = username(conn)
password = password(conn)
for line in fd:
line = line.strip()
if line.split(":")[0] in username and line.split(":")[1] in password:
while True:
conn.send("Welcome")
message = conn.recv(2048)
print(message)
if message:
broadcast(message, conn)
else:
remove(conn)
if not message:
break
def start_client():
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.bind((connect, conport))
sock.listen(1)
while True:
conn, addr = sock.accept()
clients.append(conn)
start_new_thread(client_thread, (conn,))
sock.close()
def broadcast(message, connection):
for machine in clients:
if machine != connection:
try:
machine.sendall(message)
except:
machine.close()
remove(machine)
def remove(connection):
if connection in clients:
clients.remove(connection)
threading.Thread(target=start_client).start()
Ожидаемый результат:
Username: Admin
Password: 1234
Welcome
Фактический результат:
Username: Admin
Password: 1234
login.txt
Admin:1234
Nimda:4321
Не могли бы вы мне помочь?Он не будет правильно входить в систему: c