20192221 实验三《Python程序设计》实验报告

20192221 2019-2020-2 《Python程序设计》实验x报告

课程:《Python程序设计》
班级: 1922
姓名: 叶蕊馨
学号:20192221
实验教师:王志强老师
实验日期:2020年5月16日
必修/选修: 公选课

1.实验内容

(一)实验内容

创建服务端和客户端,服务端在特定端口监听多个客户请求。客户端和服务端通过Socket套接字(TCP/UDP)进行通信。

(二)实验要求

(1)创建服务端和客户端,选择一个通信端口,用Python语言编程实现通信演示程序;

(2)要求包含文件的基本操作,例如打开和读写操作。

(3)要求发送方从文件读取内容,加密后并传输;接收方收到密文并解密,保存在文件中。

(4)程序代码托管到码云。

2. 实验过程及结果

本实验可以分为三部分,一是对socket网络编程的使用(其中又分为服务端和客户端),二是加密解密的操作,三是对文件的操作。

1.client部分
  • 1.将client和sever连接
  • 2.将传输的文字写入文件并读取
  • 3.加密并合成字符串
  • 4.传输
    s.sendall(unknown.encode())
    print("已发送加密后的内容")
    print(unknown)
    s.close()
2.sever部分
  • 1.连接并监听接收
  • 2.写好一个解密函数
  • 3.将传过来的内容进行解密并写入文件
3.完整代码
import os
import socket
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(('127.0.0.1',8001))
os.makedirs("C:\\Users\\10522\\Desktop\\1922")
file = open("C:\\Users\\10522\\Desktop\\1922\\20192221client-send.txt", 'w')
file.write("钻石路虽然扎脚,但熠熠生辉啊\n")
file.write("只有手写的信才能被泪水打湿")
file.close()
file = open("C:\\Users\\10522\\Desktop\\1922\\20192221client-send.txt", 'r')
content = file.readlines()
str = ''
for item in content:
    str += item
print("读取到的内容:\n",str)
file.close()
unknown = ''                        # 加密
for i in range(len(str)):
    if ord(str[i]) < 125 and str[i] != '\n':
        temp = chr(ord(str[i]) + 1)
        unknown += temp+' '
    else:
        unknown += str[i]+' '
s.sendall(unknown.encode())
print("已发送加密后的内容")
print(unknown)
s.close()
import socket
import os
def decode(unknown):
    """
    :param unknown: 未知字符,用来拿去解密
    :return: known,已经完成解密的字符
    """
    known = ''
    for i in range(len(unknown)-1):
        if unknown[i] == '\n':
            known += '\n'
        elif ord(unknown[i]) <= 125:
            known += chr(ord(unknown[i])-1)
    return known
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.bind(('127.0.0.1',8001))
s.listen()
conn, address = s.accept()
unknown = conn.recv(1024)
file = open("C:\\Users\\10522\\Desktop\\1922\\20192221sever.txt","w")
unknown = unknown.decode()
print("正在解码中.....")
unknown = unknown.split(' ')
known = decode(unknown)
file.write(known)
file.close()
print("已将收到的内容写到\"C:\\Users\\10522\\Desktop\\1922\\20192221sever.txt\"中,请注意查收!")

s.close()
4.运行结果

5.码云链接

码云

3. 实验过程中遇到的问题和解决过程

  • 问题1:对顺序的不熟悉,不清楚是先把要传的写入文件还是先加密
  • 问题1解决方案:
  •  总体来说还是对文件操作的不熟悉,百度了一下后发现可以写入文件再读出文件,和加密并没有什么冲突
    
  • 问题2:对加密算法运用
    -问题2的解决方案
  • 百度了一些比较简单的加密算法(但对有的算法还是不太理解原理),于是用了超级简单的一种(没学过也能看懂的)

其他(感悟、思考等)

1.不要常问老师或者同学,要学会自己解决问题,自己再搜索网页上寻找想要的答案,会比问老师同学来得更有成就感
2.对于网络编程的不熟悉在这次实验中体现的淋漓尽致,今后要多加练习学习新的部分(感觉网络编程在python更上一步的路上还是很重要的)
3.不过两周左右没写博客,连markdown的基本用法都要忘了,熟能生巧,多多练习吧

参考资料

百度加密算法

posted @ 2020-05-16 14:24  Jxxxco  阅读(229)  评论(0编辑  收藏