zoukankan      html  css  js  c++  java
  • 学号:20191221,《python实验设计》实验报告三

    学号 2019-2020-2 《Python程序设计》实验三报告

    课程:《Python程序设计》
    班级: 1912
    姓名: 何应霆
    学号:20191221
    实验教师:王志强
    实验日期:2020年5月16日
    必修/选修: 公选课

    1.实验内容

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

    2. 实验过程及结果

    客户端代码如下:
    import socket
    c=0
    key = 0
    d = 0
    n = 0
    for o in range(1,1000):
    key = key10 + 1
    a = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    a.connect(('192.168.56.1',8001))
    p = input("请输入文件的位置:")
    File = open(p,"r")
    list1 = File.readlines()
    for i in list1:
    n = n+1
    a.sendall(str(n).encode())
    for i in list1:
    for j in i:
    b = ord(j)
    d = d
    256+b
    e = d^key
    a.sendall(str(e).encode())
    File.close()
    c = a.recv(1024)
    print(c.decode())
    a.close()
    服务器代码如下:
    import os
    import socket
    key = 0
    b = "".encode()
    for o in range(1,1000):
    key = key*10 + 1
    g = ""
    coon = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    coon.bind(('192.168.56.1',8001))
    coon.listen()
    coon,daress = coon.accept()
    File = open("C:UsersginjzlbgDesktop estFilerecived","w+")
    n = coon.recv(1024)
    n1 = int(n.decode())
    for i in range(0,n1):
    b = coon.recv(1024)
    d = int(b.decode())
    d = d ^ key
    while d != 0:
    e = d % 256
    d = d - e
    d = int(d // 256)
    m = chr(e)
    g = m + g
    File.write(g)
    File.close()
    coon.sendall("已收到文件".encode())
    这是文件C:UsersginjzlbgDesktop estFilesend以及运行后多出的文件Filerecived

    这里我采用的是xor加密算法,key用100个1组成的一百位数充当,由客户端加密后传输到服务器,再由服务器解密后传输到文件中

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

    虽然只遇到了一个问题,但是确确实实被困扰了很久

    • 问题1:多行接收的问题
    • 问题1解决方案:引入了变量n,在开始传输文件前先用n将行数记录下来并且传输到服务器,再利用for循环接收

    其他(感悟、思考等)

    以前自己写过的代码一定要保存,比如这次中XOR加密的方式和解密的方式全部来自于我之前写的代码中
    想要自己以后也看得懂代码一定要注释,比如这次我花了许多时间来搞懂之前自己写的代码,是很不划算的。

  • 相关阅读:
    Collections接口下的Comparetor类和Comparable接口排序
    MySQL(二)、数据库数据类型
    MySQL(表设置、详细说明查询操作)、JDBC基础
    IO流:对象流、Poperties类
    IO流:System.in、SequenceInputStream合并流、内存输入输出流、数据流
    IO流:文件对象、字符流、字节流、缓冲流
    泛型
    集合
    String常用方法、toString()、equals()、compareTo()
    继承、抽象、接口、封装
  • 原文地址:https://www.cnblogs.com/ginjzlbg/p/12900069.html
Copyright © 2011-2022 走看看