zoukankan      html  css  js  c++  java
  • 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:Users86138Desktop182220182204.txt", 'r',encoding='UTF-8') as f:

        data=f.readline().encode()

        based_data1 = base64.b64encode(data)

        print(based_data1)

    open(r"C:Users86138Desktop193320193316.txt", "w").close()

    with open(r"C:Users86138Desktop193320193316.txt", 'wb') as f:

        f.write(based_data1)

    with open(r"C:Users86138Desktop193320193316.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的大门,领略极致编程之美,同时又培养了我们非同凡响的自学能力,再三感谢!谢谢!谢谢!谢谢!

  • 相关阅读:
    All consistent reads within the same transaction read the snapshot established by the first read.
    Mojo 分析日志接口
    Mojo 分析日志接口
    Mojo Mysql utf-8字符集 需要{mysql_enable_utf8 => 1}
    Mojo Mysql utf-8字符集 需要{mysql_enable_utf8 => 1}
    MySQL 关闭FOREIGN_KEY_CHECKS检查
    MySQL 关闭FOREIGN_KEY_CHECKS检查
    14.3.2.4 Locking Reads 锁定读
    14.3.2.3 Consistent Nonlocking Reads 一致性非锁定读
    14.3.2.3 Consistent Nonlocking Reads 一致性非锁定读
  • 原文地址:https://www.cnblogs.com/jiangzhuo/p/12944995.html
Copyright © 2011-2022 走看看