客户端实现与服务器端的socket连接发送和接收相应的字符串。设计一个服务器端实现与客户端的socket连接发送和接收相应的字符串;实现连接和查询数据库的功能检索某用户名和密码是否为数据库中已经存储的值。维护一个小型数据库可以采用Mysql数据库仅包含两个字段:用户名密码;保存已经认证的用户名和密码值对。
客户端代码:
import socket
HOST = 'localhost'
PORT = 8000
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.connect((HOST, PORT))
while True:
data = input('请输入用户名和密码,用空格分隔:')
s.sendall(data.encode())
response = s.recv(1024).decode()
print(response)
服务器端代码:
import socket
import mysql.connector
HOST = 'localhost'
PORT = 8000
db = mysql.connector.connect(
host="localhost",
user="root",
password="password",
database="test"
)
cursor = db.cursor()
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.bind((HOST, PORT))
s.listen()
print('服务器已启动...')
while True:
conn, addr = s.accept()
with conn:
print('客户端已连接:', addr)
while True:
data = conn.recv(1024).decode()
if not data:
break
username, password = data.split()
sql = "SELECT * FROM users WHERE username = %s AND password = %s"
val = (username, password)
cursor.execute(sql, val)
result = cursor.fetchone()
if result:
conn.sendall('认证成功'.encode())
else:
conn.sendall('认证失败'.encode())
``
原文地址: https://www.cveoy.top/t/topic/cQ7t 著作权归作者所有。请勿转载和采集!