python客户端和服务端实验_20183202 实验三《Python程序设计》实验报告

本文介绍了使用Python的Socket库创建服务端和客户端进行文件的加密通信。实验要求包括建立TCP连接,文件的读写操作,以及加密传输和解密保存。在实验过程中,作者遇到了需要按顺序启动服务端和客户端的问题,以及对Socket编程的不熟悉,通过查阅资料和同学帮助得以解决。实验结果显示通信成功,文件传输完成。
摘要由CSDN通过智能技术生成

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

课程:《Python程序设计》

班级: 1842

姓名: 李思远

学号:20183202

实验教师:王志强

实验日期:2020年5月16日

必修/选修: 公选课

1.实验内容

(一)实验内容

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

(二)实验要求

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

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

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

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

2. 实验过程及结果

1.服务端的建立:

import socket

s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)

s.connect(('127.0.0.1',62470))

with open(r"C:\Users\86152\Desktop\20183202\20183202.txt",'rb') as f:

for i in f:

s.send(i)

data=s.recv(1024)

if data!= b'success':

break

s.send('quit'.encode())

file=s.recv(1024)

with open('file', 'r',encoding='UTF-8') as f:

print(f.readline())

f.close()

2.客户端的建立:

import socket

import struct

FILEINFO_SIZE=struct.calcsize('128s32sI8s')

s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)

s.bind(('127.0.0.1',62470))

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("文件接收完成")

with open('file', 'r',encoding='UTF-8') as f:

print(f.readline())

f.close()

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()

3.实验运行结果:

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

问题1:在运行代码时频繁报错,从网上寻找解决方式无果。

问题1解决方案:经同学帮助后发现,在运行代码时要先运行服务端,再运行客户端。

问题2:对于socket代码掌握不熟,不能熟练运用。

问题2解决方案:首先回顾了云班课中老师提供的资料,对socket代码又重新进行了理解;之后在编写代码时通过查阅代码表的方式,减轻了工作量。

其他(感悟、思考等)

对于socket代码,在编写过程中感到很吃力,于是上网进行了资料查找,查到如下相关资料:

“网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。

建立网络通信连接至少要一对端口号(socket)。socket本质是编程接口(API),对TCP/IP的封装,TCP/IP也要提供可供程序员做网络开发所用的接口,这就是Socket编程接口;HTTP是轿车,提供了封装或者显示数据的具体形式;Socket是发动机,提供了网络通信的能力。”

参考资料

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值