20193316实验三

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

课程:《Python程序设计》
班级:1933
姓名:姜灼
学号:20193316       
实验教师:王志强
实验日期:2020年5月23日
必修/选修: 公选课

## 1.实验内容

客户端:

import socket

import base64

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

s.connect(('127.0.0.1', 8001))

print("加密后的内容:")

with open(r"C:\Users\86138\Desktop\1822\20182204.txt", 'r',encoding='UTF-8') as f:

    data=f.readline().encode()

    based_data1 = base64.b64encode(data)

    print(based_data1)

 

open(r"C:\Users\86138\Desktop\1933\20193316.txt", "w").close()

 

with open(r"C:\Users\86138\Desktop\1933\20193316.txt", 'wb') as f:

    f.write(based_data1)

 

 

with open(r"C:\Users\86138\Desktop\1933\20193316.txt", 'rb') as f:

    for i in f:

        s.send(i)

        data = s.recv(1024)

        if data != b'success':

            break

s.send('quit'.encode())

print("解密后的内容:")

file = s.recv(1024)

with open('file', 'r', encoding='UTF-8') as f:

    print(f.readline())

    f.close()

 

 

 

 

 

 

 

服务器:

 

import socket

import struct

import base64

FILEINFO_SIZE=struct.calcsize('128s32sI8s')

s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)

s.bind(('127.0.0.1',8001))

s.listen(5)

conn,address=s.accept()

print("文件接收开始")

 

with open('file', 'ab' ) as f:

    # 接收数据

    data = conn.recv(1024)

    if data == b'quit':

        breakpoint()

    # 写入文件

    f.write(data)

    # 接受完成标志

    conn.send('success'.encode())

print("文件接收完成")

# 关闭连接

print("加密后的内容:")

with open('file', 'r',encoding='UTF-8') as f:

 

    based_data1= f.readline().encode()

    print(based_data1)

    plain_data1 = base64.b64decode(based_data1)

 

 

 

open("file", "w").close()

 

with open('file', 'wb') as f:

    f.write(plain_data1)

 

print("解密后的内容:")

with open('file', 'r',encoding='UTF-8') as f:

    print(f.readline())

 

with open("file",'rb') as f:

    for i in f:

        conn.send(i)

        data=conn.recv(1024)

        if data!= b'success':

            break

conn.send('quit'.encode())

 

s.close()

 

 


## 2. 实验过程及结果

 





## 3. 实验过程中遇到的问题和解决过程
- 问题1:开始做成了UDP编程,后来发现做错了,要做TCP编程
- 问题1解决方案:自我觉察
- 问题2:开始只学会了socket通信的文本发送,后来看到要包含文件的打开和读写
- 问题2解决方案:再去钉钉把文件那一章节的回访看一下,复习一遍

- 问题3:开始打漏了一行代码,client没有建立链接,程序出错
- 问题3解决方案:使用debug,发现问题,然后加入一行代码,s.connect(‘127.0.0.1’,8001)

 

 

 

## 其他(感悟、思考等)
大力感谢王志强老师的精心栽培,带领我们走入Python的大门,领略极致编程之美,同时又培养了我们非同凡响的自学能力,再三感谢!谢谢!谢谢!谢谢!

posted @ 2020-05-23 23:01  Costa-Rica  阅读(112)  评论(1编辑  收藏  举报