编程语言
首页 > 编程语言> > 20192317 2022-2022-2 《Python程序设计》实验三报告

20192317 2022-2022-2 《Python程序设计》实验三报告

作者:互联网

20192317 2022-2022-2 《Python程序设计》实验三报告

课程:《Python程序设计》
班级: 1923
姓名: 邓子彦
学号:20192317
实验教师:王志强
实验日期:2022年5月2日
必修/选修: 公选课

一、实验内容

(1)创建服务端和客户端,选择一个通信端口,用Python语言编程实现通信演示程序;

(2)要求包含文件的基本操作,例如打开和读写操作。

(3)要求发送方从文件读取内容,加密后并传输;接收方收到密文并解密,保存在文件中。

(4)程序代码托管到码云。

二、实验过程及结果

2.1 socket 编程思路
TCP服务端:
TCP客户端:

2.2 服务端
import socket

# 明确配置变量
ip_port = ('127.0.0.1', 8080)
back_log = 5
buffer_size = 1024
# 创建一个TCP套接字
ser = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  # 套接字类型AF_INET, socket.SOCK_STREAM   tcp协议,基于流式的协议
ser.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)  # 对socket的配置重用ip和端口号
# 绑定端口号
ser.bind(ip_port)  # 写哪个ip就要运行在哪台机器上
# 设置半连接池
ser.listen(back_log)  # 最多可以连接多少个客户端
while True:
    # 阻塞等待,创建连接
    #外层循环,即使客户端一次发送完成后,服务端也可以继续不断开,继续收发下次内容
    con, address = ser.accept()  # 在这个位置进行等待,监听端口号
    while True:
        try:
            # 接受套接字的大小,怎么发就怎么收
            msg = con.recv(buffer_size)
            if msg.decode('utf-8') == 'exit':
                # 断开连接
                print('断开连接.')
                sendmsg = con.send('您断开了连接.'.encode('utf-8'))
                con.close()
                break
            else:
                print('服务器收到消息:', msg.decode('utf-8'))
        except Exception as e:
            break
# 关闭服务器
ser.close()

2.3 客户端
import socket
#配置连接的server信息
connect_ip = ('127.0.0.1', 8080)
buffer_size = 1024

p = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  #基于网络类型的,tcp协议
p.connect(connect_ip)   #连接服务端
while True:
    msg = input('please input:')
    # 防止输入空消息
    if not msg:
        continue
    p.send(msg.encode('utf-8'))  # 收发消息一定要二进制,记得编码
    if msg == 'exit':
        recvmsg = p.recv(buffer_size)  #收服务端发送的消息
        print(recvmsg.decode('utf-8'))
        break

三、实验过程中遇到的问题和解决过程

四、其他(感悟、思考等)

标签:socket,Python,实验,20192317,2022,msg,接字,服务端,客户端
来源: https://www.cnblogs.com/dengziyan/p/16219219.html