V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
爱意满满的作品展示区。
machengim

局域网文件传输工具

  •  
  •   machengim · Dec 4, 2020 · 7664 views
    This topic created in 1970 days ago, the information mentioned may be changed or developed.

    各位好,我做了一个局域网文件 /文件夹传输工具,工作方式参考了 send-anywhere,发送端生成一个接收码,接收端输入接收码接收文件,不过只用于局域网,所以也不需要互联网支持。语言是 rust 。已经做了主流操作系统的 release 包。新手一枚,不知道这东西有没有用(除了我自己),也不知道做的怎么样,请大神批评指正。

    https://github.com/machengim/isend

    25 replies    2020-12-08 09:34:54 +08:00
    cctv1005s927
        1
    cctv1005s927  
       Dec 4, 2020
    速度呢?有相关的指标吗
    b1u2g3
        2
    b1u2g3  
       Dec 4, 2020
    开的是什么端口?
    machengim
        3
    machengim  
    OP
       Dec 4, 2020   ❤️ 1
    @cctv1005s927 感谢指教,刚才测试了一下,发现了一个问题:同样文件发送端和接收端互换的话速度差距很大,反复测试多次,很稳定。很奇怪。

    Mac -> Linux: 12MB/s
    Linux -> Mac: 3MB/s
    Linux -> Windows: 4MB/s
    Windows -> Linux: 12MB/s
    f6x
        4
    f6x  
       Dec 4, 2020
    局域网文件传输工具 ~= 病毒传播工具
    machengim
        5
    machengim  
    OP
       Dec 4, 2020
    @b1u2g3 先打开一个 UDP 端口用来监听和发送广播,建立 TCP 连接后关闭;另一个 TCP 连接传送文件。端口号目前是系统分配的。
    JustSong
        6
    JustSong  
       Dec 4, 2020 via Android
    我个人感觉写成 HTTP 服务的形式可能更好用一些,Go 版本,供参考: https://github.com/songquanpeng/lan-share-go
    yingfengi
        7
    yingfengi  
       Dec 4, 2020 via Android
    呃。。。smb 之类的不香吗
    loli
        8
    loli  
       Dec 4, 2020 via Android
    @yingfengi
    我也奇了怪,好像从没人推荐过 smb.
    这个倒还好,起码是多平台支持.
    好多要在 windows 上实现这功能的人非要推荐什么 ftp,webdav 。什么小巧,一行代码。自带的不香吗?权限控制,操作便捷,目录管理。速度真没想得那么慢。
    machengim
        9
    machengim  
    OP
       Dec 4, 2020
    @loli 我也试过 smb,不过感觉在 linux 下配置有点费劲,每次都要查攻略,后来反而是 dropbox 用的多。这个小工具我现在就是用做 dropbox 的补充的,体积大或者不必保存到 dropbox 里的文件。
    AoTmmy
        10
    AoTmmy  
       Dec 4, 2020 via Android
    推荐 chfs,非常方便
    niubee1
        11
    niubee1  
       Dec 4, 2020
    python -m http.server
    machengim
        12
    machengim  
    OP
       Dec 4, 2020
    @AoTmmy 给个链接看看?
    machengim
        13
    machengim  
    OP
       Dec 4, 2020
    @niubee1 也用过,不过感觉命令行更快一点。还有就是也在考虑一些后续功能比如传输完成自动关机之类的。
    imn1
        14
    imn1  
       Dec 4, 2020
    这个速度很低啊,我自己用 ftp 可以上 100MB/s,某些情况还要限速呢 —— 某些情况达到 80+MB/s 时,win 这边写会卡,所以 win 这边要限 50MB/s 进入
    我也发现系统之间速度不同,linux 和 win 之间,就算不限速,ftp 传同一个大文件双向速度不同,搞不清原因

    题外
    ftp 不方便的地方是权限,不能传随意文件,也只能传到预设的 ftp 目录,还需要一些挪动操作
    当然,权限是合理的管理规则,我只是纯个人设备间传文件,觉得如果有无需权限管理的工具更方便些
    vigack
        15
    vigack  
       Dec 4, 2020
    速度一般啊,为啥不用 bit sync
    machengim
        16
    machengim  
    OP
       Dec 4, 2020
    @imn1 速度可能跟路由器有关?我刚试了往虚拟机里传文件,速度也在 100MB/s 左右。主机是 Linux,客机是 windows 。但是两个方向的速度差异我确实不理解。
    AoTmmy
        17
    AoTmmy  
       Dec 4, 2020 via Android
    machengim
        18
    machengim  
    OP
       Dec 4, 2020
    @AoTmmy 好的,谢谢
    ZiLong
        19
    ZiLong  
       Dec 4, 2020
    没有一步到位的,我觉得可以慢慢优化,对于速度,可以用 wireshark 抓包看看
    machengim
        20
    machengim  
    OP
       Dec 4, 2020
    @ZiLong 我发现速度慢不是程序造成的。我用 npm 和 python 的 http server 还有 iperf3 都做了速度测试,得到了一样的结果:从 mac 连接 linux 是 12MB~15MB/s,从 linux 连 mac 是 2 ~ 3MB/s 。非常诡异。
    kingfalse
        21
    kingfalse  
       Dec 4, 2020 via Android
    Windows 的话,everything,就可以起个 HTTP 服务给别人下载了
    bequt
        22
    bequt  
       Dec 5, 2020
    @machengim 站内 webd 也不错
    fox0001
        23
    fox0001  
       Dec 5, 2020 via Android
    Linux 的话,我比较懒,一般用 sftp,或者直接 scp
    shunconf
        24
    shunconf  
       Dec 8, 2020
    windos 没图形化是没有用灵魂的
    machengim
        25
    machengim  
    OP
       Dec 8, 2020
    @shunconf 也考虑过,不过目前 rust 没有什么成熟的 gui 框架。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2659 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 74ms · UTC 15:50 · PVG 23:50 · LAX 08:50 · JFK 11:50
    ♥ Do have faith in what you're doing.