局域网发布共享文件

xml-rpc 实现的文件共享
授权协议 GPL
开发语言 Python
所属分类 应用工具、 文件传输工具
软件类型 开源软件
地区 国产
投 递 者 索梓
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

xml-rpc 实现的文件共享

这个项目取材与http://www.the5fire.com/python-project8-xml-rpc.html 。是python基础教程中的十个例子中的第八个。主要的实现原理如下:

每一个客户端都是一个节点。每一个节点,都启动一个 xml-rpc服务器。在 xml-rpc服务器中,维护着一个所有节点的集合。原文的例子,功能太少,只能下载。后来我加了一个ls 命令,可以查看包括自己的和所有节点的文件。原项目中的节点列表,必须是手动给出的,相当麻烦,是通过一个叫urlfile的文件来维护的。在我的这个项 目中,维护 节点的信息是通过程序自己学习到的。每当一个节点启动的时候,该节点就会把自己的xml-rpc服务器的访问url,通过udp广播的方式,广播给某一个 端口。同时每一个节点,只要它启动后,会监听某一个端口上的,有关xml-rpc服务器的访问url的监听。只要收到信息,就把它写入到节点列表中。通过 fetch下载文件时,如果发现了异常,则从节点列表中删除它。

现在假如有两个节点(启动了client.py文件的机器) a和b,a中的节点列表中有b,同样b中也有,当a尝试着fetch 一个文件时,如果没有在a中查找到的话,则会去找b,但是b中的节点列表是a,b会去找a。。。。。这样就形成了阻塞。原项目中,是通过一个url列表来 维护的。但是这个项目中,a机器对于自己的url是localhost,b也是localhost,但是对于a来讲b就不是localhost。所以我的 项目中,是通过维护一个secret列表来判断,下一个要查找的节点是不是已经被查过了。但是同时得先知道下一个节点的secret值,但是如果下一节点 就是上一个节点的话,还是会有阻塞,所以把xml-rpc做成多线程就很必要了。新构建一个类class ThreadRPC(ThreadingMixIn, SimpleXMLRPCServer) 。这样ThreadRPC就变成了多线程的SimpleXMLRPCServer。

本来文件的传输是使用了xml-rpc。后来我把它独立出来了。单独作为一个文件传输服务,TranServer。这个文件传输,不使用xml- rpc,而是直接用socket。用了SocketServer框架。本来是想用asynchat的。但是后来发现,这个异步框架,有点蛋疼。比如说它的 push方法。是会把数据放到叫producer_fifo的fifo数据结构中。这个做会出现一个大问题。我读本地的文件速度远远快于发送的数度,当体 积大的时候,更是如此。所以使用push传输,会发现内存占用越来越大,越来越大。。。如果不使用push,而是使用send,会发现数据不同步.鉴于这 些问题,所以我没有采用异步,而是使用了多线程的SocketServer, ThreadingMixIn

配置文件

[global]

# 监听节点的端口

listen_port = 1111

# 数据传送的端口

data_port = 1234

# 要共享的目录

share_dir = /tmp/a

使用方法

启动节点 : python client.py

获取文件列表: ls

下载文件: fetch xxx

查看文件内容: cat xxx [要查看的前n位]

  • A的IP是192.168.0.1 B的Ip是192.168.0.2 DNS也已经设置好了 子网掩码都是255.255.255.0 但A可以访问B的共享文件,而B始终无法访问A的共享文件,而且需要输入用户名和密码,我正确的输入后还是不行,后来干脆把A的密码取消掉了,还是不行。我的用户名是英文 还有我看了一下netbios和tcp/ip都安装和起用了,guest也起用了,家庭和小型办公室局域网向导我也

  • 我的问题解决的很简单,关闭了防火墙(当然之前按照下面的“ 其他说明见下 : ”之前做了设置,不过后来为了证明是防火墙的问题,所以又将“远程连接”中的设为“仅适用TCP/IP”,但局域网仍能访问),具体步骤见下面吧: 1. 其他说明见下: sqlserver2005(Expr 我的问题解决的很简单,关闭了防火墙(当然之前按照下面的“其他说明见下:”之前做了设置,不过后来为了证明是防火墙的问题,所以又

  • 在企业企业,运用局域网络,常常会在局域网中的共享资源网络服务器储放一些资源共享,便捷共享资源一些材料文档。有的共享文档很有可能必须常常浏览,那麼每一次都需要去联接共享资源网络服务器会很不便,此刻能够将常常浏览的资源共享投射到网络驱动器,之后能够立即在”电子计算机“中开启。 设定方式及配图图片以WIN5系统为例子 方式一: 进到【电子计算机】-点一下【投射网络驱动器】 弹出来投射网络驱动器对话框 控

  • $path = "//10.100.2.140/MyShare/test.txt"; var_dump(file_get_contents($path)); Windows环境下可以访问,没问题。但Linux下访问不可以,提示failed to open stream: No such file or directory。最终共享目录在别的Windows机器上。我在运行环境Linux下的共享目录测

 相关资料
  • 本文向大家介绍服务器共享文件夹设置软件、局域网共享文件夹加密工具、文件共享服务器软件的选择,包括了服务器共享文件夹设置软件、局域网共享文件夹加密工具、文件共享服务器软件的选择的使用技巧和注意事项,需要的朋友参考一下     当前,很多企业都在局域网搭建了文件服务器,用于共享文件供局域网用户访问使用,并且很多共享文件都是单位积累的无形资产和商业机密,如何在允许员工访问服务器共享文件的同时还能保证服务

  • 本文向大家介绍asp.net实现访问局域网共享目录下文件的解决方法,包括了asp.net实现访问局域网共享目录下文件的解决方法的使用技巧和注意事项,需要的朋友参考一下 本文以实例讲述了asp.net实现访问局域网共享目录下文件的解决方法,完整代码如下所示:

  • 我正在尝试制作一个用于共享音频文件的按钮。这不起作用。首先,我试图直接从原始文件夹发送文件,而不将其复制到手机卡上。这并没有解决我的问题。我尝试的第二件事是将文件保存到手机上,然后共享。将文件保存到手机的部分现在可以工作了,但当我尝试将音频文件共享到其他设备时,所有兼容的应用程序(Whatsapp、Gmail等)都崩溃了。 这是我的代码: 顺便说一下,音频文件是一个。ogg文件。我希望这些应用程序

  • 当文件需要与企业外的人进行共享或者协作时,则可通过公开共享的方式,目前公开共享有共享链接和二维码2种共享方式,共享方式如下: 1)开启公开共享; 2)设置共享权限,可设置:可编辑、仅下载、仅查看; 3)设置有效时间,可设置:24小时、7天、1个月、永久有效; 4)复制公开链接或者复制/保存共享二维码; 5)将二维码或者链接通过轻推或者其他方式发送给需要共享的对象; 6)收到链接或者二维码的人无需下

  • 本文向大家介绍VMware下ubuntu与Windows实现文件共享,包括了VMware下ubuntu与Windows实现文件共享的使用技巧和注意事项,需要的朋友参考一下 本文记录了VMware下ubuntu与Windows实现文件共享的方法,供大家参考,具体内容如下 1、首先需要在ubuntu下安装vmware-tools来实现文件共享,却发现虚拟机那里显示为灰色的,无法安装vmware-too

  • 我有一个经过验证的谷歌客户端,我想列出其他人公用文件夹中的文件(我认为共享或不共享的文件夹是不相关的,因为它是公用的) 这是我在NodeJS中的代码 注意:文档中没有“folderId”选项:https://developers.google.com/drive/api/v3/reference/files/list-只是一个drivid选项 虽然我将corpa设置为“drive”和drive I