#Author:'haijing'#date:2018/11/14

#直接拖动一张图片到该软件的目录下#创建一个yuan的package,把该图片发送到yaun的package中去#文件传送,要告诉对方你要传送的文件的名字是什么,因为要在对方某个地方存储,没有名字怎么存储呢#还要告诉对方文件的大小是多少,以便于传送,(判断传送是否完成)

#post_server服务端:在别人的哪里#必须线开启server端

import socket  #socket是一个接口 内部封装了有关ip地址和端口号的信息 并且创建ip和端口号import subprocess  #下面目前就使用一个类Popen,让代码在dos环境下运行import os

sk = socket.socket()  #创建一个socket对象s  服务端的sk对象和客户端的sk对象完全是不一样的address = ('127.0.0.1',8000)   #设置一个元组,元组内放的是ip和端口号:8000sk.bind(address)  #绑定ip和端口号,bind方法后跟的必须是一个元组sk.listen(3)  #3表示服务端最多和三个客户端同时建立通信,但是传送信息的话只能是一个一个的来print('waiting...')BASE_DIR = os.path.dirname(os.path.abspath(__file__)) #那个post_server.py的上一级目录

while 1:    conn,addr = sk.accept()  # 客户端开启之后就一直在这里等待着    #接收将要接收的文件信息    data = conn.recv(1024)    cmd,file_name,file_size = str(data,'utf8').split('|')#先将接收到的data转换为str类型的,再以竖线将str格式的data分开,分别传给三个变量    path = os.path.join(BASE_DIR,'yuan',file_name)  #yuan是在post_server上级目录中一个包的名字    file_size = int(file_size)

    #接收要写入的文件    f = open(path,'ab') #a表示如果没有该路径path,那么就去创建该路径,b是以bytes类型写,打开文件    has_receive = 0    print('开始写入')    while has_receive != file_size:        data = conn.recv(1024)        f.write(data)        has_receive += len(data)    f.close()    print('写入成功')
#Author:'haijing'#date:2018/11/14

#post_client客户端#必须线开启server端#此代码可以执行输入的dos环境下的命令,并返回执行的命令的结果

import socketimport os

sk = socket.socket()  #创建socket对象  服务端的sk对象和客户端的sk对象完全是不一样的address = ('127.0.0.1',8000)  #设置元组 里面放的是需要连接的服务器的ip地址sk.connect(address)  #连接ip地址为127.0.0.1的服务端

BASE_DIR = os.path.dirname(os.path.abspath(__file__)) #post_client.py的上一级目录while 1:    #jing发  不能发空,否则对方会停在阻塞的状态    inp_jing = input('>>>')  #输入上传的命令,例如post|post.jpg 这里是相对路径    cmd,path = inp_jing.split('|')  #以竖线将输入的内容分开,并分别传递给cmd和path    path = os.path.join(BASE_DIR,path) #路径的拼接,生成要上传的文件的绝对路径

    file_name = os.path.basename(path) #basename的作用是取到path最后的文件名字 例此时filename=post.jpg    file_size = os.stat(path).st_size  #拿到文件的大小,例post.jpg文件的大小

    #发送文件信息    file_info = 'post|%s|%s' %(file_name,file_size) #字符串拼接    sk.sendall(bytes(file_info,'utf8'))  #首先给server端发送要发送的命令和文件信息

    #发送文件    # with open(path,'rb') as f  #rb表示以bytes读    f = open(path,'rb')    has_send = 0    print('开始发送')    while has_send != file_size:        data = f.read(1024) #一次读1024个字节的数据,以为是以bytes类型读的,所以是字节        sk.sendall(data)        has_send +=len(data)    f.close()    print('发送成功')

sk.close  #关的此客户端是和服务端之间的通信通道,同样server端也是有关掉通信通道的能力,但是server端一般是不会关的

转载于:https://www.cnblogs.com/YiYA-blog/p/9960846.html

python_day26__02__文件的传送相关推荐

  1. 如何使用git上传文件到gitee以及大项目文件(超过100MB的文件如传送)remote: error: File: f422c55c723a183a1944cbec840c0171042(超详细)

    目录 1.首先我们要先在gitee上创建一个仓库 2.其次要对仓库进行配置 3.仓库创建完成 4.配置git项目 5.提交文件到gitee的gitTeach仓库 超过100MB的大文件传送的方法 1. ...

  2. 服务器里面的文件怎么传送,FTP服务器怎么传送局域网文件

    现如今,网络的使用已经十分普遍,同时也会有各种各样的局域网知识出现.比如,FTP服务器怎么传送局域网文件.学习啦小编在这里为大家详细介绍. 使用局域网传送文件的朋友也许都遇过这样的悲事,自己在拷贝移动 ...

  3. 使用你们的AirDisk产品会不会泄露文件给你们,会不会将文件数据传送到你们服务器?

    我们只是提供一台设备,帮助您远程访问硬盘的数据,数据是在您的硬盘里,我们无法获取.为了最大保障数据安全,建议您设置访问密码,对重要的隐私文件进行加密,请不要忘记说明书上的PIN码,否则加密的文件无法打 ...

  4. ftp rush 可以连linux吗,文件FTP传送工具FTP Rush实用技巧

    FTPRush功能越来越强大,奋力赶超老牌的CuteFTP和FlashFXP,成为FTP爱好者心目中最好的FTP客户端软件.下面是笔者在使用过程中总结的几个小技巧,希望能对各位FTPRush的忠实Fa ...

  5. 阿里旺旺我的文件上传服务器,阿里旺旺如何进行文件的传送

    发送文件 有三种方法可以将您本地的文件发送给您的联系人: 方法一:在和联系人的聊天窗口中,点击工具栏中的"文件"按钮: 图示:http://www.alisoft.com/cmsr ...

  6. 两台centos之间传送文件

    最近在CentOS系统中(主机A)读数据.由于A主机只是作为数据读取,具体的Deep Learning 实验,需要在主机B( CentOS )中进行,需要将主机A上的数据传输.由于主机A并不是一直开着 ...

  7. C++利用SOCKET传送文件

    C++利用SOCKET传送文件 /*server.h*/ #pragma comment(lib, "WS2_32") #include <WinSock2.h> #i ...

  8. linux蓝牙传送的文件存放,嵌入式蓝牙文件传送方案的实现

    蓝牙是一种低成本.短距离无线通信技术,工作频段使用全球统一开放的2.4 GHz的ISM频段[1],并将此频段分为79个跳频点,采用跳频技术,增强了蓝牙通信的可靠性.蓝牙技术现已被广泛应用于无线通信领域 ...

  9. linux备份文件到ftp上,Linux如何利用ssh传送文件至FTP空间进行备份

    在Linux系统中,可通过ssh将文件传送到FPT空间中,将一些重要的数据进行备份,那么要如何实现文件的传送呢?小编给大家具体介绍下Linux利用ssh传送文件到FTP空间的方法. 步骤: 假设要备份 ...

最新文章

  1. ​超大规模时空数据的分布式存储与应用
  2. Matplotlib实例教程(十七)3D山体图
  3. OpenJ_Bailian 4148 生理周期
  4. async function_理解 Iterator, Generator 和 Async/Await
  5. SAP Fiori应用里Cross Application跳转的一些常见错误
  6. [Beego] [bootstrap-paginator]实现分页功能
  7. ASP.NET下QueryString不同字符编码间强制转换的解决方案
  8. 心得 : 面向对象和面向过程的区别【分享】
  9. 基于环境气象因素影响的异常就诊量预测
  10. 异常的总结 java 1615387415
  11. 键盘出现与消失的监听方法
  12. 五问唐骏:泡妞真的如你说的那么容易?
  13. 合成孔径雷达算法与实现_[SAR笔记0]合成孔径雷达成像算法与实现
  14. java栈顶元素_栈(Stack)
  15. java设计模式之装饰者模式
  16. 模拟恶劣网络环境常用的几种解决方案
  17. Windows核心编程_关闭Windows
  18. mysql-cluster5.7搭建集群(实际测试有效)
  19. 江苏计算机等级考试二级office题库,2020年江苏省计算机二级Office考试易考套餐:二级MS Office高级应用全程班(网课+题库)...
  20. 解决crontab定时任务多次执行

热门文章

  1. 自顶而下系统构架分析
  2. 第三百二十七天 how can I 坚持
  3. ubuntu-10.04的测试环境 安装测试 Coreseek开源中文检索引擎-Sphinx中文版
  4. D - 小晴天老师系列——晴天的后花园
  5. Android底部菜单栏 仿微博效果
  6. Galaxy nexus i9250 android 4.2 一键root
  7. c#3.0加入的一些新特性——泛型集合
  8. 苹果前置摄像头拍出来是反的怎么调_不用等了!屏下摄像头难攻克,明年还是挖孔屏...
  9. websphere安装应用失败_如何使用安卓手机给任天堂Switch安装游戏NSUSBloader mobile
  10. python3 for mac_PyCharm for Mac-PyCharm Mac版下载 V2018.3.2-PC6苹果网