Python网络编程之使用TCP方式传输文件操作示例
本文实例讲述了Python网络编程之使用TCP方式传输文件操作。分享给大家供大家参考,具体如下:
TCP文件下载器
客户端
需求:输入要下载的文件名,从服务器端将文件拷贝到本地
步骤:
1.创建TCP套接字,绑定端口
2.连接服务端
3.输入要下载的文件名
4.将文件名编码,并发送到服务端
5.接收服务端返回的数据
6.关闭套接字
代码
#导入模块
importsocket
#创建套接字
tcp_client_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#绑定端口
tcp_client_socket.bind(("",8080))
#连接IP地址和端口
tcp_client_socket.connect(("192.168.43.216",8080))
file_name=input("请输入要下载的文件:\n")
#文件名编码
tcp_client_socket.send(file_name.encode())
try:
#文件传输
withopen("C:/Users/Administrator/Desktop/"+file_name,"wb")asfile:
whileTrue:
#接收数据
file_data=tcp_client_socket.recv(1024)
#数据长度不为0写入文件
iffile_data:
file.write(file_data)
#数据长度为0表示下载完成
else:
break
#下载出现异常时捕获异常
exceptExceptionase:
print("下载异常",e)
#无异常则下载成功
else:
print(file_name,"下载成功")
#关闭客户端
tcp_client_socket.close()
服务端
需求:接收客户端发送的文件名,将文件传输给客户端
步骤:
1.创建TCP套接字,绑定端口
2.设置监听
3.接收客户端传输的文件名信息并解码
4.将文件发送到客户端
5.关闭客户端套接字(断开连接)
代码
#导入模块
importsocket
#创建tcp服务端socket
tcp_server_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#绑定端口
tcp_server_socket.bind(("",8080))
#设置监听,把服务端socket由主动套接字改成被动套接字,只能接收客户端的连接请求
tcp_server_socket.listen(128)
whileTrue:
#接收客户端信息
client_socket,client_ip=tcp_server_socket.accept()
print("客户端:",client_ip,"连接")
#接收下载信息
file_name_data=client_socket.recv(1024)
#解码下载信息
file_name=file_name_data.decode()
try:
#数据传输
withopen("/home/python/Desktop/"+file_name,"rb")asfile:
whileTrue:
#读取文件数据
file_data=file.read(1024)
#数据长度不为0表示还有数据没有写入
iffile_data:
client_socket.send(file_data)
#数据为0表示传输完成
else:
print(file_name,"传输成功")
break
exceptExceptionase:
print("传输异常:",e)
#关闭客户端连接
client_socket.close()
测试
客户端请求
服务器响应
客户端接收
更多关于Python相关内容可查看本站专题:《PythonSocket编程技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》
希望本文所述对大家Python程序设计有所帮助。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。