110
社区成员
发帖
与我相关
我的任务
分享课程:《Python程序设计》
班级: 2323
姓名: 黄津
学号:20232319
实验教师:王志强
实验日期:2024年4月17日
必修/选修: 公选课
客户端源码,端口2028
import socket
from DesModule import *
client = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
client.connect(("192.168.1.111",2028)) #connect接收的是一个元组,故有两个括号
while True:
data = input('>>>').strip()
encrypted_data = des_encrypt(data.encode('utf-8'), "12345678") #返回字符串
client.send(encrypted_data.encode('utf-8')) ##此处要将字符串重新编码
ret = client.recv(1024)
decrypted_ret = des_descrypt(ret.decode('utf-8'), "12345678")
print(decrypted_ret)
client.close
服务端源码,端口2028
import socket
from DesModule import *
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(("192.168.1.104", 2028))
server.listen(5) #监听
while True:
conn, addr = server.accept() #此处创造了新的套接字coon,addr为客户端地址
print(conn)
while True:
try:
data = conn.recv(1024)
de = des_descrypt(data.decode('utf-8'),"12345678")
print(de)
ret_data = input("请回复:")
sendout = des_encrypt(ret_data,"12345678")
conn.send(sendout.encode('utf-8'))
except Exception:
break
conn.close()
作为服务端

作为客户端

上传到gitee,详见https://gitee.com/huangjin42953/test_python/tree/master

关于文件的操作及连接过程
作为客户端

作为服务端

文件操作结果如下

问题1:DesModule模块的使用
问题1解决方案:分析代码,询问ChatGPT。
得知该模块代码的返回值为字符串而非字节流,不能直接将返回值直接放到cilent.send()中,需要使用utf-8编码再使用。服务端同理。
第一次接触通过编程来实现网络通信,感觉十分神奇。
参考资料
《零基础学Python》