110
社区成员
发帖
与我相关
我的任务
分享课程:《Python程序设计》
班级: 2323
姓名: 杨文贤
学号:20232327
实验教师:王志强
实验日期:2024年4月17日
必修/选修: 公选课
创建服务端和客户端,服务端在特定端口监听多个客户请求。
客户端和服务端通过Socket套接字(TCP/UDP)进行通信。
1. 运行服务器端代码,等待用户连接
import socket
from DesModule import des_encrypt, des_descrypt
TCP_IP = "192.168.1.111"#当前服务器ip
TCP_PORT = 2028
KEY = "12345678"
tcpserver = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
tcpserver.bind((TCP_IP, TCP_PORT))
tcpserver.listen(5)
def receive_encrypted_data(conn, KEY):
encrypted_data = conn.recv(1024).decode()
decrypted_data = des_descrypt(encrypted_data, KEY)
return decrypted_data
while True:
conn, addr = tcpserver.accept()
print(conn)
while True:
try:
data = receive_encrypted_data(conn, KEY)
print(data)
ret_data = input("请回复:")
encrypted_ret_data = des_encrypt(ret_data, KEY)
conn.send(encrypted_ret_data.encode())
except Exception:
break
conn.close()
2. 运行用户端代码,服务器端显示加入用户ip
import socket
from DesModule import des_encrypt, des_descrypt
TCP_IP = "192.168.1.111"#当前服务器ip
TCP_PORT = 2028
KEY = "12345678"
tcpclient = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
tcpclient.connect((TCP_IP, TCP_PORT))
while True:
data = input('>>>').strip()
encrypted_data = des_encrypt(data, KEY)
tcpclient.send(encrypted_data.encode())
ret_data = tcpclient.recv(1024).decode()
decrypted_data = des_descrypt(ret_data, KEY)
print(decrypted_data)
tcpclient.close()
3.连接成功后可由用户端先发送消息,示例如下:
自己充当用户端

自己充当服务器端

localhost而导致连接失败,应改为服务器端电脑ip地址;from DesModule import *不能导入,将其改为from DesModule import des_encrypt, des_descrypt后导入成功;