一、保证要传输文件的两个电脑在同一个局域网下(即同一个wifi下)。
二、有两部分程序,分为sender和reciever两部分,sender放在要发送的电脑上,reciever放在要接受文件的电脑上。该程序可以实现某个文件内文件数量变化时,将新增的文件实时传输过去。

1、sender部分:

# coding = utf-8
import socket      # socket库的用法,详细参考浏览器收藏夹
import os
import sys
import struct    # 该库将用户定义的数据类型和文件io关联起来,用二进制模式来写这些数据
import timedef sock_client(file,final):try:# socket.SOCK_STREAM 表示指定使用面向连接的TCP协议,socket.AF_INET表示指定使用IPv4协议s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)# 需要连接的电脑的IP地址和端口,该函数是发送文件,需要输入接收方电脑的ipv4地址,端口可以找一个空闲的,一般大于5000是空闲的s.connect(('192.168.1.180', 45795))except socket.error as msg:print(msg)print(sys.exit(1))    # sys.exit(1)是当程序异常结束时,返回1。程序正常结束时,返回0.while True:# 传输一张EL图片用时12msorigin=os.listdir(file)  # 遍历文件夹,返回文件和文件夹名字set1=set(origin)    # 创建一个无序的元素集set2=set(final)filepath_diff=set1^set2   # 找取两个元素集不一样的元素start=time.time()     # 返回当前时刻# 定义文件信息,128s表示文件名为128bytes长,l表示一个int或log文件类型# struct.pack是对图片字节大小进行一个包装,然后发送(这一步并不是发送图片),,把数据封装成字符串(实际上是类似于c结构体的字节流)# struct.pack()、struct.unpack()和struct.calcsize()具体用法找度娘for filepath in filepath_diff:final.append(filepath)filepath=f'{file}{filepath}'    # 拼接路径s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)s.connect(('192.168.1.180', 6666))fhead = struct.pack(b'128sqs', bytes(os.path.basename(filepath), encoding='utf-8'), os.stat(filepath).st_size,bytes('a', encoding='utf-8'))s.send(fhead)# print('client filepath: {0}'.format(filepath))fp = open(filepath, 'rb')while 1:data = fp.read(1024)if not data:print('{0} file send over...'.format(filepath))breaks.send(data)end=time.time()print(end-start)s.close()# breakif __name__ == '__main__':file='图片\\'sock_client(file,[])

其中struct.pack()、struct.unpack()的参数问题如下:

2、reciever部分:

# coding = utf-8
'''
接收端(服务端,用来接受客户端发来的图片)
'''
import socket
import os
import sys
import structdef socket_service_image():try:s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)s.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)s.bind(('192.168.1.180',6666))      #IP地址和端口号需要根据自己的来设置s.listen(10)                        #开始监听端口,最多能监听10个except socket.error as msg:print(msg)sys.exit(1)print("Wait for Connection.....................")while True:sock,addr=s.accept()        #等待与客户端的连接,addr是连接地址,deal_image(sock,addr)def deal_image(sock,addr):while True:fileinfo_size=struct.calcsize('128sqs')buf=sock.recv(fileinfo_size)        #接收图片名和图片的字节大小if buf:filename,filesize,computername=struct.unpack('128sqs',buf)     # 按照给定的格式(fmt)解析字节流string,返回解析出来的tuplefn=filename.decode().strip('\x00')computername = computername.decode().strip('\x00')new_filename=os.path.join(computername,'new_'+fn)recv_size=0         #用来记录传输的字节数if not os.path.isdir(computername):    # 若不存在该文件夹,则创建一个os.makedirs(computername)fp=open(new_filename,'wb')while recv_size!=filesize:if filesize-recv_size>1024:data=sock.recv(1024)recv_size+=1024else:data=sock.recv(1024)recv_size=filesizefp.write(data)          #写入图片数据fp.close()sock.close()break
if __name__ == '__main__':socket_service_image()

局域网下两个电脑的文件实时传输--python程序相关推荐

  1. 局域网下两个电脑的文件传输--共享文件夹

    保证两台电脑在同一个局域网下(即同一个wifi下即可).两台电脑可以都是win10,也可以一个是win10,另一个是乌班图. 找到控制面板----网络和Internet----网络和共享中心----更 ...

  2. 同一局域网下两台电脑传文件

    自己买了新电脑,由于有大量文件需要传输,故搜索使用了这个方法. 第一步: 在控制面板-->网络和共享中心-->高级共享设置,打开后按如下设置. 问题:在启用网络发现时,点击"保存 ...

  3. 解决 Win10 局域网下两台电脑无法ping通: 无法访问目标主机

    解决 Win10 局域网下两台电脑无法ping通: 无法访问目标主机 解决 Win10 局域网下两台电脑无法ping通: 无法访问目标主机 问题描述 第一步:启用规则 第二步:修改高级共享设置 第三步 ...

  4. 局域网下两台电脑之间的文件传输

    场景 首先,我的实验室有两台电脑,一台ubuntu接实验室网线,另一台windows使用的是其他实验室WiFi(我们搬了实验室之后全部都是网线没有WiFi).这就造成了不同操作系统如果有的时候需要互相 ...

  5. 局域网下两台电脑ping不通

    参考:https://blog.csdn.net/sinat_38718975/article/details/79866557 1.在同一网段内 假设电脑A.B均在192.168.0.X的网段内,两 ...

  6. 【夏虫语冰】Win10局域网下两台电脑无法ping通: 无法访问目标主机

    文章目录 1.简介 2.修改高级共享设置 3.启用防火墙规则 4.局域网内的其他主机访问NAT模式下的虚拟机 4.1 虚拟机网络设置 4.2 访问测试 4.2.1 http测试 4.2.2 curl测 ...

  7. 同一局域网下多台电脑共享文件夹

    同一局域网下两台电脑共享文件 1.关闭用户A电脑的网络防火墙 2.用户B在cmd中ping用户A的ipv4地址,查看是否可以ping通 3.用户A设置需要共享的文件夹(右键文件夹->属性-> ...

  8. 22、Windows10下局域网的两台电脑间传输文件

    一.说明 局域网内两台电脑传输文件使用windows自带的文件共享机制即可,不需要找专门的文件传输软件,下面来介绍使用方法. 二.步骤 1.控制面板 2.网络和Internet 3.网络和共享中心 4 ...

  9. #实现互联网聊天_局域网内两台电脑如何实时语音聊天通话

    有的人想实现局域网内实时语音通话的功能,如果电脑可以连接互联网的话,可安装QQ,电脑版微信等进行实时语音聊天,如果电脑只连接了内网,并未连接因特网,该怎么实现呢?其实不难,只需要通过局域网声音传输软件 ...

最新文章

  1. 关于ognl+struts-tag与el+jstl互相代替,以及el和jstl的学习笔记
  2. 高低压配电系统基础知识,都是非常全面的分享!
  3. Winform中实现批量文件复制(附代码下载)
  4. python制作查询工具发给别人使用_用Python做一个简单的翻译工具
  5. 生活杂谈-空调的修理
  6. paip.软件及网站项目开发效率低下的思索与改进
  7. paip.一千 常用汉字 高频汉字 覆盖率90%
  8. HTML静态网页作业-网上花店4个页面(HTML+CSS+JS)
  9. spring 的bean 作用域
  10. c++敢死队问题代码(为大一而生)
  11. VIVO NEX3高层预热,差0.4到100%屏占比,这得让多少人心动
  12. ubuntu播放不了本地视频
  13. 学习淘宝分享出来的链接web检测打开原生App
  14. 整合营销系统推荐乐云seo_珠海整合营销【乐云seo】
  15. 图解AUTOSAR(五)——微控制器抽象层(MCAL)
  16. 华为机试题:HJ108 求最小公倍数(python)
  17. 【leetcode】1104. Path In Zigzag Labelled Binary Tree
  18. linux配置4g网络命令_Linux常用操作练习汇总
  19. 64位计算机比32快多少,64位系统和32位系统哪个速度快
  20. Windows Server+IIS+ASP+MSSQL2K+ServU 系统整合安全方案(转)

热门文章

  1. 自定义chrome的背景颜色
  2. ps文件导出html
  3. Spectator view——Hololens第三人称视角技术的详细实现过程
  4. Three.js漫游相机控制器/three.js第三人称视角漫游/three.js第一人称视角漫游
  5. 唱好铁血丹心谐音正规_蒙古语唱铁血丹心
  6. 最新视频打赏系统全开源+附教程/亲测可用
  7. [转]开源日志系统比较
  8. 测试用例设计方法有哪些?举例说明
  9. 阿里quick_bi和biee报表工具的对比
  10. QT编写的学生管理系统