zoukankan      html  css  js  c++  java
  • 20192401 实验三《Python程序设计》实验报告

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

    课程:《Python程序设计》
    班级: 1924
    姓名: 王麦齐
    学号: 20192401
    实验教师:王志强
    实验日期:2020年5月16日
    必修/选修: 公选课

    1.实验内容

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

    2. 实验过程及结果

    首先复习了相关Socket的相关技术,系统的回忆了相关关键字的有关知识。
    以下是实验过程摸索出的代码:
    Sever:

    import socket
    import os
    import base64
    
    def main():
        # 1.创建一个tcp套接字socket
        tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    
        # 2.绑定本地地址,端口号bind
        tcp_socket.bind(("127.0.0.1", 7000))
    
        # 3.监听个数 listen(128)
        tcp_socket.listen(128)
        print('****************服务器连接********************')
        conn, addr = tcp_socket.accept()
        conn.send('Hi!'.encode('utf-8'))
        file = open('./' + "new_file.txt", 'wb')
        data = conn.recv(1024)
        jiema = base64.b64decode(data)
        print(jiema)
        file.write(jiema)
        file.close()
        print('接收任务完成!')    
        while True:
    
            print("***************服务器开始*****************")
            print("")
            # 4.接受客户进来,accept 返回元祖,一个变量提供当前进来客户到的服务
            # 第二个变量继续等待下一个客户
            new_server, add = tcp_socket.accept()
            while True:
                # 5.接受客户信息
                mess = new_server.recv(1024)
    
                if mess:
                    print(mess.decode("utf-8"))
                    # 5.给客户返回信息
                    send_message = input("请输入你要回复的信息:")
                    new_server.send(send_message.encode("utf-8"))
    
                else:
                    break
    
            # 6.关闭当前服务的客户
            new_server.close()
    
        # 7.关闭套接字
        tcp_socket.close()
    
    
    if __name__ == "__main__":
        main()
    

    CLIENT:
    import socket
    import base64

    客户端的socket的初始化

    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.connect(('127.0.0.1',7000))#用元组的形式进行连接(ip地址,端口)
    
    file = open(r'D:Desktop	ry1.txt')
    str = file.read()
    print(str)
    bytes_str = str.encode("utf-8")
    str_url = base64.b64encode(bytes_str)
    print(str_url)
    s.send(str_url)
    while 1 :
        str1 = input("请输入要传输的内容:")
        s.sendall(str1.encode())
        data = s.recv(1024)
        print(data.decode())
        if  str1 == 'close':
            break
    s.close()
    

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

    • 问题1:如何进行相关加密任务
    • 问题1解决方案:在百度中寻找相关资料,利用base64的相关语句进行加密解密

    4.感悟

    这次实验中一直想要尝试仿照QQ的对话框,可以进行文字交流和数据的传输,书到用时方恨少,凭借自己找到的资料和自己的调试还是没能将其完美实现,仅仅只是完成了老师所交代的实验内容,但是从这次的实验中,我体会到了作为程序设计人员基础不牢固的苦痛,没有足够的储备只能临时搜寻,在大片大片的答案中筛选,在实现文件的传输过程中,共有两份客户端和服务器的代码无法运行,而且凭借自身的知识储备无法检查出其内在错误,只好作罢,但是今天突然有了一个念想,希望自己在省下的一个月里,在完成实验四的同时,将这次实验没有完成的遗憾填满,感激挫折,感谢阻挠,才拥有思考!

    参考资料

  • 相关阅读:
    Spring Aware源码
    Spring 后置处理器源码
    Java8 Optional
    几种自定义Spring生命周期的初始化和销毁方法
    Spring通过@Autowired获取组件
    Spring的组件扫描注解
    Spring通过注解注入外部配置文件
    [CSP-S模拟测试92]题解
    [笔记乱写]关于数论函数(关于卷积的一些证明+杜教筛)
    我觉得我就是[数据删除]
  • 原文地址:https://www.cnblogs.com/wangmaiqi0206/p/12939908.html
Copyright © 2011-2022 走看看