用python编写客户端与服务器程序:客户端从名为“pswd.txt”的文件中读取密码,把密码发送到服务器程序,显示服务器的返回结果;客户端接受来自客户端发送的密码,显示客户端的socket信息(IP地址,端口号),验证密码
时间: 2024-02-16 21:00:50 浏览: 145
好的,这个问题需要分别编写客户端和服务器端的代码。
首先是服务器端的代码:
```python
import socket
SERVER_HOST = '127.0.0.1'
SERVER_PORT = 5000
def check_password(client_socket, password):
# 这里假设密码为 "123456"
if password == "123456":
client_socket.sendall(b"Password correct!")
else:
client_socket.sendall(b"Password incorrect!")
def handle_client(client_socket):
client_address = client_socket.getpeername()
print(f"Received connection from {client_address}")
password = client_socket.recv(1024).decode()
check_password(client_socket, password)
client_socket.close()
def start_server():
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as server_socket:
server_socket.bind((SERVER_HOST, SERVER_PORT))
server_socket.listen(1)
print(f"Listening on {SERVER_HOST}:{SERVER_PORT}")
while True:
client_socket, client_address = server_socket.accept()
handle_client(client_socket)
if __name__ == "__main__":
start_server()
```
这个代码中,我们定义了一个 `check_password` 函数用于验证客户端发送的密码是否正确,如果正确就发送 "Password correct!",否则发送 "Password incorrect!"。
在 `handle_client` 函数中,我们先获取客户端的地址,然后接收客户端发送的密码,最后调用 `check_password` 函数进行验证。
在 `start_server` 函数中,我们创建了一个 `socket` 对象,绑定了服务器的地址和端口,并开始监听客户端的连接。每当有一个客户端连接时,就会创建一个新的线程来处理这个客户端的请求。
接下来是客户端的代码:
```python
import socket
SERVER_HOST = '127.0.0.1'
SERVER_PORT = 5000
def read_password():
with open("pswd.txt", "r") as f:
password = f.read().strip()
return password
def start_client():
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as client_socket:
client_socket.connect((SERVER_HOST, SERVER_PORT))
password = read_password()
client_socket.sendall(password.encode())
data = client_socket.recv(1024)
print(f"Received from server: {data.decode()}")
print(f"My socket info: {client_socket.getsockname()}")
if __name__ == "__main__":
start_client()
```
这个代码中,我们定义了一个 `read_password` 函数用于从文件中读取密码。在 `start_client` 函数中,我们创建了一个 `socket` 对象,并连接到服务器。然后读取密码并发送到服务器,接收服务器的返回结果并打印出来,最后打印出客户端的地址和端口。
注意:这个代码中的密码是保存在一个名为 "pswd.txt" 的文件中,你需要在同级目录下创建这个文件并写入你的密码。
希望这个代码能够帮助到你。
阅读全文