标签分类
当前位置:首页 > 程序设计电子书 > 树莓派电子书网盘下载
树莓派开发实战 树莓派开发实战
卫薇

卫薇 提供上传

资源
18
粉丝
7
喜欢
149
评论
3

    树莓派开发实战 PDF 第2版

    树莓派电子书
    • 发布时间:

    给大家带来的一篇关于树莓派相关的电子书资源,介绍了关于树莓派、开发、实战方面的内容,本书是由人民邮电出版社出版,格式为PDF,资源大小64.4 MB,蒙克编写,目前豆瓣、亚马逊、当当、京东等电子书综合评分为:8.4,更多相关的学习资源可以参阅 程序设计电子书、等栏目。

  • 树莓派开发实战 PDF 下载
  • 下载地址:https://pan.baidu.com/s/1tudIvPPq0-hFB0PGnPKaMg
  • 分享码:f5d5
  • 树莓派开发实战

    内容介绍

    树莓派(Raspberry Pi)是这款应用场景Linux系统软件的、只能一張透支卡尺寸的卡片式电子计算机。产品研发树莓派的最初目地是根据廉价硬件配置和自由软件来促进大学的基本电子计算机课程文化教育,但迅速树莓派就获得电子计算机和硬件配置发烧友的亲睐;她们用它学编程,并造就出各式各样奇特的、红极一时的硬件软件运用。

    这书由多产作家Simon Monk撰写,是将內容开展全方位升級以后的第2版,包揽了丰富多彩的实践实例,详尽解读了树莓派的配备与管理方法、数据连接、电脑操作系统及手机软件。另一个,这书还详细介绍了应用PHP开展树莓派开发设计的各类方法,书中详细介绍了相关PHP程序编写的基本知识、目录与词典、PHP高級特点。一起,这书还详细介绍了相关机器视觉、硬件基础、操纵硬件配置、电动机、大数字键入、控制器、显示系统、物联网技术及Arduino等有关专业知识。

    这书合适程序猿和电子计算机软、硬件配置发烧友,及其对树莓派很感兴趣的小读者阅读文章,也合适做为树莓派有关实践课程内容的具体指导用书。

    目录

    • D11章配置与管理1
    • 1.0引言1
    • 1.1xuan择树莓派型号1
    • 1.2封装树莓派3
    • 1.3xuan择电源4
    • 1.4xuan择操作系统发行包6
    • 1.5通过NOOBS刷写microSD卡7
    • 1.6装配系统9
    • 1.7连接DVI或VGA显示器10
    • 1.8使用复合视频显示器/TV10
    • 1.9调整显示器中的图像尺寸12
    • 1.10优化性能13
    • 1.11修改密码15
    • 1.12让树莓派开机后直接进入窗口系统16
    • 1.13关闭树莓派17
    • 1.14安装树莓派摄像头模块18
    • 1.15使用蓝牙设备21
    • D12章网络连接23
    • 2.0引言23
    • 2.1连接有线网络23
    • 2.2查看自己的IP地址25
    • 2.3配置静态IP地址26
    • 2.4为树莓派配置网络名称28
    • 2.5配置无线网络连接29
    • 2.6使用控制台线联网31
    • 2.7利用SSH远程控制树莓派33
    • 2.8利用VNC远程控制树莓派35
    • 2.9利用RDP远程控制树莓派36
    • 2.10在Mac网络中实现文件共享38
    • 2.11在Mac上共享树莓派的屏幕39
    • 2.12将树莓派用作网络存储服务器41
    • 2.13网络打印44
    • D13章操作系统47
    • 3.0引言47
    • 3.1通过图形界面移动文件47
    • 3.2启动一个终端会话49
    • 3.3利用终端浏览文件系统50
    • 3.4复制文件或文件夹52
    • 3.5重命名文件和文件夹53
    • 3.6编辑文件54
    • 3.7查看文件内容56
    • 3.8不借助编辑器的情况下创建文件57
    • 3.9创建目录57
    • 3.10删除文件或目录58
    • 3.11以超级用户限执行任务59
    • 3.12理解文件限60
    • 3.13修改文件的限61
    • 3.14修改文件的属主62
    • 3.15屏幕截图63
    • 3.16利用apt-get安装软件64
    • 3.17删除利用apt-get安装的软件65
    • 3.18利用Pip安装Python软件包65
    • 3.19通过命令行获取文件66
    • 3.20利用Git获取源代码67
    • 3.21在系统启动时自动运行程序或脚本67
    • 3.22让程序或脚本作为服务自动运行68
    • 3.23定期自动运行程序或脚本70
    • 3.24搜索功能71
    • 3.25使用命令行历史记录功能72
    • 3.26监视处理器活动73
    • 3.27文件压缩75
    • 3.28列出已连接的USB设备76
    • 3.29将输出从命令行重定向到文件76
    • 3.30连接文件77
    • 3.31使用管道78
    • 3.32将输出隐藏到终端78
    • 3.33在后台运行程序79
    • 3.34创建命令别名80
    • 3.35设置日期和时间80
    • 3.36查看SD卡剩余存储空间81
    • D14章软件83
    • 4.0引言83
    • 4.1搭建媒体中心83
    • 4.2安装Oice软件84
    • 4.3安装其他浏览器86
    • 4.4使用树莓派商店87
    • 4.5打造网络摄像头服务器88
    • 4.6运行老式游戏控制台模拟器90
    • 4.7运行树莓派版Minecraft92
    • 4.8运行Minecraft服务器93
    • 4.9运行OpenArena95
    • 4.10树莓派无线电发射器96
    • 4.11运行GIMP98
    • 4.12互联网广播99
    • D15章Python入门101
    • 5.0引言101
    • 5.1在Python2和Python3之间做出xuan择101
    • 5.2使用IDLE编辑Python程序102
    • 5.3使用Python控制台104
    • 5.4利用终端运行Python程序105
    • 5.5变量106
    • 5.6显示输出结果107
    • 5.7读取用户输入107
    • 5.8算术运算108
    • 5.9创建字符串109
    • 5.10连接-合并字符串110
    • 5.11将数字转换为字符串111
    • 5.12将字符串转换为数字111
    • 5.13确定字符串的长度112
    • 5.14确定某字符串在另一个字符串中的位置113
    • 5.15截取部分字符串113
    • 5.16使用字符串替换另一个字符串中的内容114
    • 5.17字符串的大小写转换115
    • 5.18根据条件运行命令116
    • 5.19值的比较117
    • 5.20逻辑运算符118
    • 5.21将指令重复执行特定次数119
    • 5.22重复执行指令直到特定条件改变为止120
    • 5.23跳出循环语句120
    • 5.24定义Python函数121
    • D16章Python语言中的列表与字典123
    • 6.0引言123
    • 6.1创建列表123
    • 6.2访问列表元素124
    • 6.3确定列表长度125
    • 6.4为列表添加元素125
    • 6.5删除列表元素126
    • 6.6通过解析字符串创建列表127
    • 6.7遍历列表127
    • 6.8枚举列表128
    • 6.9列表排序129
    • 6.10分割列表130
    • 6.11将函数应用于列表131
    • 6.12创建字典131
    • 6.13访问字典133
    • 6.14删除字典元素134
    • 6.15遍历字典134
    • D17章Pythongao级特性137
    • 7.0引言137
    • 7.1格式化数字137
    • 7.2格式化时间和日期138
    • 7.3返回多个值139
    • 7.4定义类140
    • 7.5定义方法141
    • 7.6继承142
    • 7.7向文件中写入内容143
    • 7.8读文件144
    • 7.9序列化-Pickling145
    • 7.10异常处理146
    • 7.11使用模块147
    • 7.12随机数148
    • 7.13利用Python发送Web请求149
    • 7.14Python的命令行参数150
    • 7.15从Python运行Linux命令151
    • 7.16从Python发送电子邮件152
    • 7.17利用Python编写简单Web服务器153
    • 7.18同时进行多件事情154
    • 7.19让Python无所事事156
    • 7.20将Python应用于树莓派版Minecraft156
    • D18章机器视觉159
    • 8.0引言159
    • 8.1安装SimpleCV159
    • 8.2为机器视觉配置USB摄像头160
    • 8.3将树莓派的摄像头模块用于机器视觉162
    • 8.4数硬币163
    • 8.5人脸检测166
    • 8.6运动检测168
    • 8.7光学字符识别170
    • D19章硬件基础173
    • 9.0引言173
    • 9.1GPIO连接器使用说明173
    • 9.2使用GPIO接口时树莓派的安全保护176
    • 9.3配置I2C176
    • 9.4使用I2C工具178
    • 9.5配置SPI179
    • 9.6安装PySerial以便从Python访问串口180
    • 9.7安装Minicom以检测串口181
    • 9.8使用带有跳线的面包板182
    • 9.9使用树莓派的排线连接面包板183
    • 9.10使用树莓派Squid184
    • 9.11使用RaspberrySquid按钮186
    • 9.12利用两个电阻将5V信号转换为3.3V187
    • 9.13利用电平转换模块将5V信号转换为3.3V189
    • 9.14利用电池为树莓派供电190
    • 9.15利用锂电池为树莓派供电192
    • 9.16SenseHAT入门指南193
    • 9.17ExplorerHATPro入门指南194
    • 9.18RaspiRobotBoard入门指南196
    • 9.19使用PiPlate原型板198
    • 9.20制作树莓派扩展板-HardwareAtTop HAT201
    • 9.21树莓派的计算模块204
    • 9.22PiZero205
    • D110章控制硬件207
    • 10.0引言207
    • 10.1连接LED207
    • 10.2让GPIO引脚进入安全状态209
    • 10.3控制LED的亮度210
    • 10.4制造蜂鸣声213
    • 10.5利用晶体管开关大功率直流设备214
    • 10.6使用继电器控制大功率设备的开关216
    • 10.7控制高压交流设备219
    • 10.8编写用于控制开关的用户界面220
    • 10.9编写控制LED和电机的PWM功率的用户界面221
    • 10.10改变RGBLED的颜色223
    • 10.11使用大量LED-Charlieplexing方式225
    • 10.12将模拟仪表用作显示器228
    • 10.13中断编程230
    • D111章电机233
    • 11.0引言233
    • 11.1控制伺服电机233
    • 11.2精Q控制伺服电机237
    • 11.3控制多台伺服电机239
    • 11.4控制直流电动机的速度242
    • 11.5控制直流电机的方向244
    • 11.6使用单极步进电机248
    • 11.7使用双极步进电机252
    • 11.8利用步进电机HAT驱动双极步进电机253
    • 11.9使用RaspiRobot板驱动双极步进电机256
    • 11.10打造一款简单的机器人小车257
    • D112章数字输入261
    • 12.0引言261
    • 12.1连接按钮开关261
    • 12.2通过按钮开关切换开关状态264
    • 12.3使用双位拨动开关或滑动开关265
    • 12.4使用三位拨动开关或滑动开关266
    • 12.5按钮去抖269
    • 12.6使用外部上拉电阻271
    • 12.7使用旋转-正交编码器272
    • 12.8使用数字键盘275
    • 12.9检测移动278
    • 12.10为树莓派添加GPS280
    • 12.11拦截按键283
    • 12.12拦截鼠标移动285
    • 12.13使用实时时钟模块286
    • D113章传感器291
    • 13.0引言291
    • 13.1使用电阻式传感器291
    • 13.2测量亮度296
    • 13.3利用热敏电阻测量温度298
    • 13.4检测甲烷301
    • 13.5测量电压304
    • 13.6为测量而降低电压306
    • 13.7使用电阻式传感器与ADC309
    • 13.8使用ADC测量温度310
    • 13.9测量树莓派的CPU温度312
    • 13.10利用SenseHAT测量温度、湿度和气压313
    • 13.11利用数字传感器测量温度315
    • 13.12利用MCP3008模块测量加速度318
    • 13.13使用SenseHAT的惯性管理单元-IMU321
    • 13.14利用SenseHAT寻找磁北323
    • 13.15利用簧片开关检测磁铁323
    • 13.16利用SenseHAT感应磁场325
    • 13.17测量距离325
    • 13.18电容式触摸传感技术328
    • 13.19显示传感器的值331
    • 13.20利用USB闪存驱动器记录日志332
    • D114章显示设备335
    • 14.0引言335
    • 14.1使用四位LED显示设备335
    • 14.2在I2CLED矩阵上面显示消息337
    • 14.3使用SenseHATLED矩形显示器339
    • 14.4在AlphanumericLCDHAT上显示消息341
    • 14.5在AlphanumericLCD模块上显示消息343
    • 14.6使用OLED图形显示器347
    • 14.7使用可寻址的RGBLED灯条349
    • D115章物联网355
    • 15.0引言355
    • 15.1使用Web接口控制GPIO输出355
    • 15.2在网页上面显示传感器读数360
    • 15.3使用IFTTT发送电子邮件及其他通知363
    • 15.4利用ThingSpeak发送Tweets367
    • 15.5CheerLights369
    • 15.6向ThingSpeak发送传感器数据370
    • 15.7使用Dweet和IFTTT响应Tweet373
    • D116章Arduino与树莓派377
    • 16.0引言377
    • 16.1通过树莓派对Arduino进行编程378
    • 16.2利用SerialMonitor与Arduino进行通信380
    • 16.3配置PyFirmata以便通过树莓派来控制Arduino382
    • 16.4通过树莓派对Arduino的数字输出进行写操作384
    • 16.5使用PyFirmata与TTL串口386
    • 16.6使用PyFirmata读取Arduino的数字输入388
    • 16.7利用PyFirmata读取Arduino的模拟输入390
    • 16.8模拟输出-PWM与PyFirmata391
    • 16.9利用PyFirmata控制伺服电机393
    • 16.10定制基于TTLSerial的Arduino通信395
    • 16.11通过I2C自定义与Arduino之间的通信399
    • 16.12在树莓派上使用小型Arduino402
    • 16.13aLaMode板与树莓派入门403
    • 16.14在树莓派和aLaMode板上使用ArduinoShield406
    • 附录A配件与供应商409
    • 附录B树莓派引脚415

    读书笔记

    基于树莓派的语音对话机器人

    本文实例为大家分享了基于树莓派的语音对话机器人,供大家参考,具体内容如下

    第一部分代码

    arecord -D "plughw:1" -f S16_LE -r 16000 -d 3 /home/pi/Desktop/voice.wav

    第二部分代码

    # coding: utf-8
    import sys 
    import json 
    import urllib2 
    import base64 
    import requests
    reload(sys) 
    sys.setdefaultencoding(“utf-8”)
    def get_access_token(): 
    url = “https://openapi.baidu.com/oauth/2.0/token” 
    body = { 
    “grant_type”:”client_credentials”, 
    “client_id” :”此处填写自己的client_id”, 
    “client_secret”:”此处填写自己的client_secret”, 
    }
    r = requests.post(url,data=body,verify=True)
    respond = json.loads(r.text)
    return respond["access_token"]
    def yuyinshibie_api(audio_data,token): 
    speech_data = base64.b64encode(audio_data).decode(“utf-8”) 
    speech_length = len(audio_data) 
    post_data = { 
    “format” : “wav”, 
    “rate” : 16000, 
    “channel” : 1, 
    “cuid” : “B8-27-EB-BA-24-14”, 
    “token” : token, 
    “speech” : speech_data, 
    “len” : speech_length 
    }
    url = "http://vop.baidu.com/server_api"
    json_data = json.dumps(post_data).encode("utf-8")
    json_length = len(json_data)
    #print(json_data)
     
    req = urllib2.Request(url, data=json_data)
    req.add_header("Content-Type", "application/json")
    req.add_header("Content-Length", json_length)
     
    #print("asr start request\n")
    resp = urllib2.urlopen(req)
    #print("asr finish request\n")
    resp = resp.read()
    resp_data = json.loads(resp.decode("utf-8"))
    if resp_data["err_no"] == 0:
      return resp_data["result"]
    else:
      print(resp_data)
      return None
    def asr_main(filename,tok): 
    try: 
    f = open(filename, “rb”) 
    audio_data = f.read() 
    f.close() 
    resp = yuyinshibie_api(audio_data,tok) 
    return resp[0] 
    except Exception,e: 
    print “e:”,e 
    return “识别失败”.encode(“utf-8”)

    第三部分代码

    # coding: utf-8
     
    import requests
    import json
    import sys
    reload(sys)
    sys.setdefaultencoding("utf-8")
     
     
    def Tuling(words):
      Tuling_API_KEY = "此处填写自己的Turling KEY"
     
      body = {"key":Tuling_API_KEY,"info":words.encode("utf-8")}
     
      url = "http://www.tuling123.com/openapi/api"
      r = requests.post(url,data=body,verify=True)
     
      if r:
        date = json.loads(r.text)
        print date["text"]
        return date["text"]
      else:
        return None

    第四部分代码

    # coding: utf-8
    import sys 
    import urllib2 
    import json 
    import os 
    import yuyinshibie
    reload(sys) 
    sys.setdefaultencoding("utf-8")
    def yuyinhecheng_api(tok,tex): 
      cuid = "B8-27-EB-BA-24-14" 
      spd = "4" 
      url = "http://tsn.baidu.com/text2audio?tex="+tex+"&lan=zh&cuid="+cuid+"&ctp=1&tok="+tok+"&per=3" 
      #print url 
      #response = requests.get(url) 
      #date = response.read() 
      return url
      def tts_main(filename,words,tok): 
        voice_date = yuyinhecheng_api(tok,words)
        f = open(filename,"wb")
        f.write(voice_date)
        f.close()

    第五部分代码

    # coding: utf-8
     
    import os
    import time
    import yuyinhecheng
    import Turling
    import yuyinshibie
     
     
    tok = yuyinshibie.get_access_token()
     
    switch = True
    while switch:
      os.system('sudo arecord -D "plughw:1" -f S16_LE -r 16000 -d 3 /home/pi/Desktop/voice.wav')
      time.sleep(0.5)
      info = yuyinshibie.asr_main("/home/pi/Desktop/voice.wav",tok)
      if '关闭'.encode("utf-8") in info:
        while True:
          os.system('sudo arecord -D "plughw:1" -f S16_LE -r 16000 -d 10 /home/pi/Desktop/voice.wav')
          time.sleep(10)
     
          info = yuyinshibie.asr_main("/home/pi/Desktop/voice.wav",tok)
          if '开启'.encode("utf-8") in info:
            break
     
        url = "http://tsn.baidu.com/text2audio?tex=开启成功&lan=zh&cuid=B8-27-EB-BA-24-14&ctp=1&tok="+tok+"&per=3"
        os.system('mpg123 "%s"'%url)
     
     
      elif '暂停'.encode("utf-8") in info:
        url = "http://tsn.baidu.com/text2audio?tex=开始暂停&lan=zh&cuid=B8-27-EB-BA-24-14&ctp=1&tok="+tok+"&per=3"
        os.system('mpg123 "%s"'%url)
        time.sleep(10)
     
        url = "http://tsn.baidu.com/text2audio?tex=暂停结束&lan=zh&cuid=B8-27-EB-BA-24-14&ctp=1&tok="+tok+"&per=3"
        os.system('mpg123 "%s"'%url)
        continue
     
     
      else:
        tex = Turling.Tuling(info)
        url = yuyinhecheng.yuyinhecheng_api(tok,tex)
        os.system('mpg123 "%s"'%url)
        time.sleep(0.5)

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持码农之家。

    上一篇:Python地理空间分析指南  下一篇:Node.js调试指南

    展开 +

    收起 -

    树莓派相关电子书
    学习笔记
    网友NO.946194

    基于树莓派的语音对话机器人

    本文实例为大家分享了基于树莓派的语音对话机器人,供大家参考,具体内容如下 第一部分 代码 arecord -D "plughw:1" -f S16_LE -r 16000 -d 3 /home/pi/Desktop/voice.wav 第二部分 代码 # coding: utf-8import sys import json import urllib2 import base64 import requestsreload(sys) sys.setdefaultencoding(“utf-8”)def get_access_token(): url = “https://openapi.baidu.com/oauth/2.0/token” body = { “grant_type”:”client_credentials”, “client_id” :”此处填写自己的client_id”, “client_secret”:”此处填写自己的client_secret”, }r = requests.post(url,data=body,verify=True)respond = json.loads(r.text)return respond["access_token"]def yuyinshibie_api(audio_data,token): speech_data = base64.b64encode(audio_data).decode(“utf-8”) speech_length = len(audio_data) post_data = { “format” : “wav”, “rate” : 16000, “channel” : 1, “cuid” : “B8-27-EB-BA-24-14”, “token” : token, “speech” : speech_data, “len” : speech_length }url = "http://vop.baidu.com/server_api"json_data = json.dumps(post_data).encode("utf-8")json_length = len(json_data)#print(json_data) req = urllib2.Request(url, data=json_data)req.add_header("Content-Type", "application/json")req.add_header("Content-Length", json_length) #print("asr start request\n")resp = urllib2.urlopen(req)#print("asr finish request\n")resp = resp.read()resp_data = json.loads(resp.decode("utf-8"))if resp_data["err_no"] == 0: return resp_data["resul……

    网友NO.814770

    树莓派实现移动拍照

    驱动树莓派gpio的中间层库函数有wiringPi,BCM2835,以及PRi.GPIO,这里我选择使用Python语言开发的PRi.GPIO。 1、安装RPi.GPIO (1)先安装python-dev,输入以下指令。 sudo apt-get install python-dev (2)安装RPi.GPIO wget https://pypi.python.org/packages/source/R/RPi.GPIO/RPi.GPIO-0.5.11.tar.gz#解压:tar -zxvf RPi.GPIO-0.5.11.tar.gz#进入解压之后的目录 :cd RPi.GPIO-0.5.3a#启动安装 :sudo python setup.py install 2、编写驱动电机的程序 (1)树莓派与XY-160D驱动板连接方法 # 树莓派供电:# 5V电源正极接到树莓派4号5V电源引脚,负极接到树莓派39号GND引脚# 树莓派绿色ATC灯闪烁则SD卡正在运行,红色PWR灯常亮则供电正常# 更多指示灯状态请参照:树莓派LED指示灯状态的解释## 驱动板电源端供电:# 14.8V电源接驱动板电源端正极,电源负极接驱动板电源端负极## 驱动板信号端供电:# 树莓派1号引脚3.3V接到驱动板信号端+5V引脚,14号引脚GND接到驱动板信号端GND引脚# 驱动板供电正常则DS1指示灯亮起 (2)代码 使用一段简单的电机驱动代码进行测试,新建motor_drive.py文件,添加如下代码并保存: #!/usr/bin/python2#coding=utf-8import RPi.GPIO as GPIOimport time # 初始化设置引脚输出IN1 = 12 #11号引脚对应GPIO0,12号引脚对应GPIO1IN2 = 11 #11号与12号引脚分别接到驱动板IN2,IN1引脚,控制其中一侧电机IN3 = 13 #13号引脚对……

    网友NO.795599

    树莓派使用USB摄像头和motion实现监控

    本文实例为大家分享了树莓派使用USB摄像头和motion实现监控的具体代码,供大家参考,具体内容如下 一、工具 1、树莓派3B 2、USB摄像头 二、操作步骤 1、安装motion sudo apt-get install motion 2、配置motion (1) sudo nano /etc/default/motion 将里面的no修改成yes,让motion可以一直在后台运行: start_motion_daemon=yes (2) sudo nano /etc/motion/motion.conf 修改配置文件,这个文件比较长,请确保一下参数的配置。在nano编辑器下,可以使用^w快速查找到如下配置内容。也可以使用^v向下翻页。 3、启动motion sudo motion 4、查看视频数据 在局域网内的设备,不管是手机还是电脑,均可打开浏览器访问 树莓派IP:8081 5、退出motion killall -TERM motion 或者 service motion stop 三、可能出现的问题 1、配置错误 出现Unknown config option "sdl_threadnr" 解决方法: 在配置文件中,直接将这一行内容进行注释。不是下图光标所在处,是光标下面sdl_threadnr 0这一行,注释成# sdl_threadnr 0即可。 2、8081页面无法显示 在8081端口,无法显示数据,但是在8080端口可以看到motion的信息。 解决方法: 这可能是摄像头没有被识别,可以将摄像头拔下重新插入。 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持码农之家。 ……

    网友NO.443350

    树莓派采用socket方式文件传输(python)

    两个树莓派,在同一个局域网内,传输文件,采用socket方式。 client端代码: import socketimport osimport hashlibclient = socket.socket() # 生成socket,连接serverip_port =("192.168.137.210",12346) # server地址和端口号(最好是10000以后)client.connect(ip_port) # 连接print("服务器已连接")while True: content = input("")if len(content)==0: continue # 如果传入空字符会阻塞if content.startswith("get"): client.send(content.encode("utf-8")) # 传送和接收都是bytes类型 # 1.先接收长度,建议8192server_response = client.recv(1024)file_size = int(server_response.decode("utf-8")) print("接收到的大小:",file_size)# 2.接收文件内容client.send("准备好接收".encode("utf-8")) # 确认接收filename = "new" + content.split(" ")[1]f = open(filename, "wb") received_size = 0m = hashlib.md5() while received_size file_size: size = 0 # 准确接收数据大小,解决粘包 if file_size - received_size 1024: # 多次接收 size = 1024 else: # 最后一次接收完毕 size = file_size - received_size data = client.recv(size) # 多次接收内容,接收大数据 data_len = len(data) received_size += data_len print("已接收:", int(received_size/file_size*100), "%") m.update(data) f.write(data) f.close() print("实际接收的大小:", received_size) # 解码# 3.md5值校验md5_sever = client.recv(1024).decode("utf-8") md5_client = m.hexdigest() print("服务器发来的md5:",md5_sever) print("接收文件的……

    Copyright 2018-2019 xz577.com 码农之家

    版权责任说明