# feiX **Repository Path**: t919089607/feiX ## Basic Information - **Project Name**: feiX - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-07-15 - **Last Updated**: 2025-07-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # FeiX 平时工作需要,需要用到飞秋,但是找不到 mac 平台上的飞秋,所已想要做一个统一三个平台( mac os, linux, windows )的局域网通讯工具,兼容飞秋、飞鸽。 ### 开发进度 平台兼容顺序: 1. mac os ( 开发中。。。 ) 2. linux 3. windws #### 注意:使用的时候不可以发射Wifi进行热点共享!!! ### 飞秋简介( [资料来自网络](http://blog.163.com/weiming886521365@126/blog/static/3311507420124141159195/) ) >飞秋是一款局域网聊天传送文件的绿色软件,它参考了飞鸽传书(IPMSG)和QQ, 完全兼容飞鸽传书(IPMSG)协议,具有局域网传送方便,速度快 ,操作简单的优点,同时具有QQ中的一些功能,是飞鸽的完善代替者,另外,飞秋支持语音,远程协助群聊天(不需要服务器),它参考了飞鸽传 书(FreeEIM)和QQ, 完全兼容飞鸽传书协议,具有局域网传送方便,速度快,操作简单的优点,同时具有QQ中的一些功能。 1. 飞秋启动时使用UDP协议向255.255.255.255这个广播地址发送广播包,默认端口是2425。广播包内容包含用户名、工作组、主机名、IP等信息 ;已启动飞秋的用户通过2425端口收到此广播包后,就会在自己的用户列表中添加这个用户的用户名、工作组等信息,同时向对方IP发送本机用户的 个人信息;从而双方都能建立起用户列表; 2. 刷新用户列表时发送的广播包和启动时差不多,只不过返回的标识信息略有不同; 3. 传送聊天信息时同样使用UDP协议;由于UDP协议是无连接协议,传输速度快,但是没有确认机制,是不可靠的协议,需要自己定义返回信息的 标志来判断对方是否收到信息; 4. 用户离线时发送一个离线广播包到255.255.255.255,收到此广播包的用户,根据包中的IP地址(也可能是多种判断标志或者包含硬件标识, 比如网卡地址等)删除对方的用户列表信息; 5. 广域网无法直接使用广播方式,靠手工添加”局域网外广播列表”来建立相互的关系; 6. 飞秋传送文件是使用TCP协议,端口2425; ### IPMSG ( [资料来源于网络](https://www.cnblogs.com/hnrainll/archive/2011/05/07/2039567.html) ) >本协议是由日本人Shirouzu Hiroaki (白水 启章)先生编写。它是基于TCP/IP端口的收发信息服务;飞鸽传书可以安装在任一使用TCP/IP协议 的操作系统上。在网络中完成了动态用户识别机制。所有飞鸽用户之间可以相互交换信息。飞鸽使用TCP/UDP端口(默认端口:2425)。 信息发送/接收使用UDP协议, 文件发送/接收使用TCP协议。 ### 注意事项: 1. ':'被用做分隔符。你不可以在用户名和主机名中使用这个分隔符。 2. 如果用户/主机中含有':',请使用其他符号替换,例如';'. 3. windows 版飞秋采用的协议为 GBK, 接收和发送的时候都需要进行编码操作 ### 飞秋协议分析 飞秋在 IPMSG 协议上做了拓展,下面将会使用 [Wireshark](https://www.wireshark.org/) 逐步进行分析补充 ##### 1. 发送消息和成功回执 让我们发送命令:`1_lbt6_8#998#FeiX#0#0#0#4001#9:1523368691537:def:TINCHER:288:好` `1_lbt6_8` 是飞秋版本号, `998` 表示等级, `FeiX` 表示对方资料, `#0#0#0#4001#9` 暂时不知道是啥意思 , `1523368691537` 包序号,这里建议使用时间戳, 接下来 `def` 是用户名, `TINCHER` 是主机名, `288`是命令字,表示发送消息 发送成功之后接收方会回复命令:`1_lbt6_0#128#74E6E2152F9D#0#0#0#4001#9:1523394620:sayyid:DESKTOP-DDQ2SA7:33:2147483647 `1_lbt6_0` 是飞秋版本号, `128` 表示等级, `74E6E2152F9D` 表示对方资料, `#0#0#0#4001#9` 暂时不知道是啥意思 , `1523394620` 包序号,这里建议使用时间戳, 接下来 `sayyid` 是用户名, `DESKTOP-DDQ2SA7` 是主机名, `33`是命令字,表示收到信息, 2147483647不知道啥意思 如果在大约1秒内没有收到回执,在接下来的时间会连续发送 4 条同样的信息。加上之前的一次,一共 5 次,如果都没响应,代表失败。 ##### 2. 获取输入状态 输入状态: `1_lbt6_0#128#74E6E2152F9D#0#0#0#4001#9:1523394673:sayyid:DESKTOP-DDQ2SA7:121:` `1_lbt6_0` 是飞秋版本号, `128` 表示等级, `74E6E2152F9D` 表示对方资料, `#0#0#0#4001#9` 暂时不知道是啥意思 , `1523394673` 包序号,这里建议使用时间戳, 接下来 `sayyid` 是用户名, `DESKTOP-DDQ2SA7` 是主机名, `121`是命令字,表示输入中 停止输入状态: `1_lbt6_0#128#74E6E2152F9D#0#0#0#4001#9:1523394673:sayyid:DESKTOP-DDQ2SA7:122:` `1_lbt6_0` 是飞秋版本号, `128` 表示等级, `74E6E2152F9D` 表示对方资料, `#0#0#0#4001#9` 暂时不知道是啥意思 , `1523394673` 包序号,这里建议使用时间戳, 接下来 `sayyid` 是用户名, `DESKTOP-DDQ2SA7` 是主机名, `122`是命令字,表示暂停输入 输入暂停后,大约两秒就会变成暂停输入状态 ##### 3. 上线与下线 `1_lbt6_0#128#74E6E2152F9D#0#0#0#4001#9:1523394677:sayyid:DESKTOP-DDQ2SA7:0:` `1_lbt6_0#128#74E6E2152F9D#0#0#0#4001#9:1523394680:sayyid:DESKTOP-DDQ2SA7:6291457:sayyid`