Python使用socket_TCP实现小文件下载功能


Posted in Python onOctober 09, 2020

服务器

import socket
 
# 1.创建套接字
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 2.绑定端口
server.bind(('127.0.0.1', 7890))
# 3.变为被动监听模式
server.listen(4)
while True:
  # 4.等待客户端链接
  s_new, addr = server.accept()
  print('用户【{}】已经成功连接!!'.format(addr[0]))
  while True:
    # 5.接受消息
    try:
      # 若客户端强行断开连接服务器不会崩溃
      recv_data = s_new.recv(1024).decode('utf-8')
      if recv_data:
        print('来自【{}】的用户表示要下载: 【{}】'.format(addr[0], recv_data))
        # 6.发送消息
        try:
          f = open(recv_data, 'rb')
          content = f.read()
          send_data = s_new.send(content)
          f.close()
          print('下载成功!')
        except Exception as result:
          send_data = s_new.send('Non'.encode('utf-8'))
          print('未找到要下载的文件')
      else:
        print('用户已经正常退出!')
        break
    except Exception as res:
      print('用户已经退出连接!')
      break
  s_new.close()
# 7,关闭套接字
server.close()

客户端

import socket
# 创建套接字
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定IP地址
s.connect(('127.0.0.1', 7890))
while True:
 
  # 发送数据
  send_data = str(input('请输入想要下载的文件名:'))
  if send_data == 'exit':
    print('已退出下载!')
    break
  s.send(send_data.encode('utf-8'))
 
  # 接收数据
  recv_data = s.recv(2048)
  if recv_data == 'Non'.encode('utf-8'):
    print('未找到要下载的文件!')
  else:
    with open('【new】' + send_data, 'wb') as f:
      f.write(recv_data)
      print('[{}]下载成功!'.format(send_data))
      f.close()
 
# 关闭套接字
s.close()

运行结果(服务器):

Python使用socket_TCP实现小文件下载功能

运行结果(客户端):

Python使用socket_TCP实现小文件下载功能

文件结果;

Python使用socket_TCP实现小文件下载功能

到此这篇关于Python使用socket_TCP实现小文件下载功能的文章就介绍到这了,更多相关Python小文件下载内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python下的Softmax回归函数的实现方法(推荐)
Jan 26 Python
解决python nohup linux 后台运行输出的问题
May 11 Python
Django添加favicon.ico图标的示例代码
Aug 07 Python
解决python3 安装完Pycurl在import pycurl时报错的问题
Oct 15 Python
基于python的socket实现单机五子棋到双人对战
Mar 24 Python
对pyqt5中QTabWidget的相关操作详解
Jun 21 Python
python实现二级登陆菜单及安装过程
Jun 21 Python
python移位运算的实现
Jul 15 Python
Python操作列表常用方法实例小结【创建、遍历、统计、切片等】
Oct 25 Python
Python3 虚拟开发环境搭建过程(图文详解)
Jan 06 Python
python 爬虫爬取京东ps4售卖情况
Dec 18 Python
python中的unittest框架实例详解
Feb 05 Python
python实现逻辑回归的示例
Oct 09 #Python
Django生成数据库及添加用户报错解决方案
Oct 09 #Python
pip已经安装好第三方库但pycharm中import时还是标红的解决方案
Oct 09 #Python
python实现数据结构中双向循环链表操作的示例
Oct 09 #Python
Python collections模块的使用方法
Oct 09 #Python
python爬取代理IP并进行有效的IP测试实现
Oct 09 #Python
Python中Selenium模块的使用详解
Oct 09 #Python
You might like
超神学院:鹤熙已踏入神圣领域,实力不比凯莎弱
2020/03/02 国漫
PHP与MongoDB简介|安全|M+PHP应用实例详解
2013/06/17 PHP
一个经典的PHP验证码类分享
2014/11/18 PHP
PHP中常用的字符串格式化函数总结
2014/11/19 PHP
PHP接收json 并将接收数据插入数据库的实现代码
2015/12/01 PHP
PHP匿名函数(闭包函数)详解
2019/03/22 PHP
脚本之家贴图转换+转贴工具用到的js代码超级推荐
2007/04/05 Javascript
传智播客学习之JavaScript基础篇
2009/11/13 Javascript
js实现省市联动效果的简单实例
2014/02/10 Javascript
从零学JS之你需要了解的几本书
2014/05/19 Javascript
js采用concat和sort将N个数组拼接起来的方法
2016/01/21 Javascript
浅析JavaScript中浏览器的兼容问题
2016/04/19 Javascript
JavaScript计算值然后把值嵌入到html中的实现方法
2016/10/29 Javascript
js中string和number类型互转换技巧(分享)
2016/11/28 Javascript
解析如何利用iframe标签以及js制作时钟
2016/12/08 Javascript
详解react服务端渲染(同构)的方法
2017/09/21 Javascript
webpack学习教程之前端性能优化总结
2017/12/05 Javascript
jQuery-ui插件sortable实现自由拖动排序
2018/12/01 jQuery
vue模式history下在iis中配置流程
2019/04/17 Javascript
微信小程序实现按字母排列选择城市功能
2019/11/25 Javascript
[01:06:59]完美世界DOTA2联赛PWL S2 Magma vs FTD 第一场 11.29
2020/12/02 DOTA
利用python画出折线图
2018/07/26 Python
解决python中用matplotlib画多幅图时出现图形部分重叠的问题
2019/07/07 Python
django执行原始查询sql,并返回Dict字典例子
2020/04/01 Python
详解selenium + chromedriver 被反爬的解决方法
2020/10/28 Python
StubHub新加坡:购买和出售全球活动门票
2017/03/10 全球购物
英国在线药房和在线药剂师:Chemist 4 U
2020/01/05 全球购物
档案接收函范文
2014/01/10 职场文书
端午节粽子促销活动方案
2014/02/02 职场文书
益达广告词
2014/03/14 职场文书
优秀护士先进事迹
2014/05/08 职场文书
中文专业自荐书
2014/06/29 职场文书
小学安全汇报材料
2014/08/14 职场文书
2015年全民创业工作总结
2015/07/23 职场文书
mybatis调用sqlserver存储过程返回结果集的方法
2021/05/08 SQL Server
Matlab如何实现矩阵复制扩充
2021/06/02 Python