学习 Rust 做了个模拟自动应答机的小玩具 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
libook
V2EX    Rust

学习 Rust 做了个模拟自动应答机的小玩具

  •  
  •   libook 2024-07-08 15:01:22 +08:00 1257 次点击
    这是一个创建于 459 天前的主题,其中的信息可能已经有所发展或是发生改变。

    https://github.com/libook/net-ssr

    把树莓派接入了一个网络,但不知道它被分配到了什么 IP ,需要接显示器或者做个自动上报 IP 。

    当然要想解决我的问题有很多方法,但我只是想写写代码玩玩。

    突发奇想做个自动应答机。树莓派上跑一个应答端,我在电脑上装个询问端,询问端在网络内广播 UDP 数据,应答机收到后自动应答自己的 IP 和 hostname 。

    探索了一下 Rust 中的回调函数实现方式、clap 命令行库、build.rs 脚本的用法,对 Rust 的 crate 和 mod 机制有了更多的了解。

    比如需要 build.rs 共用 src 里的一些代码的时候,尝试了 include!宏直接引入包含共享代码的文件,会产生一些难以解决的 dead code warning ;尝试了将共用代码分成独立 crate 再从 build.rs 和程序里 use ,但拆分出来的 crate 必须要单独 publish 而不能被携带在主 crate 的源代码中;尝试了软连接但是对 Windows 的兼容性可能不好。最终我发现了有人使用#[path=]这个属性在 build.rs 中引入共享代码,尝试了一下完美解决 dead code warning 的问题。

    再比如 bin 入口文件中直接使用 mod 指令引入其他非 lib.rs 文件也会出现 dead code warning ,貌似 rust 编译器推荐所有库文件都最好在 lib.rs 中 pub mod 出来,再给 bin 入口文件引入使用。

    这个程序在 Windows 上编译需要 Packet.lib ,要安装 Npcap ,完全不熟悉 Windows 的环境变量和链接库机制,调试环境变量调试了好久……

    tinybaby365
        1
    tinybaby365  
       2024-07-22 14:43:09 +08:00
    你这个需求不要使用 pnet 吧?用个 ssdp 库比较合适。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1400 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 16:42 PVG 00:42 LAX 09:42 JFK 12:42
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86