来啦,那就进来看看呗~

王麦齐先森の博客

不必行色匆匆,不必光芒四射,不必成为别人,只需做自己

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

参考资料

posted @ 2020-05-22 21:35  王麦齐20192401  阅读(702)  评论(0编辑  收藏  举报