注意:

软件飞鸽传书【经典版】(飞鸽传书2011)本版本为V2.06(2011年)编译环境:WINXP & VS2005已经调试编译通过。大家对此估计比较感兴趣,因此传上来与大家分享一下。

软件下载地址:http://www.i-eim.com/downloads/i-eim.zip

软件简介

  飞鸽传书(IP Messenger),是由日本人Shirouzu Hiroaki (白水 启章)所发明的免费软件, 是一款局域网内即时通信软件,基于 TCP/IP(UDP)。可运行于多种操作平台(Win/Mac/UNIX/Java),并实现跨平台信息交流。不需要服务器支持, 支持文件/文件夹的传送 (2.00版以上),通讯数据采用 RSA/Blofish 加密 (2.00版以上),十分小巧,简单易用,而且你可以完全免费使用它。目前已有的版本包括: Win32, Win16, MacOS, MacOSX, X11, GTK, GNOME,Java 等, 并且公开源代码.

系统要求

  Microsoft Windows 95/98/Me/NT4.0/2000/XP/2003

  95/98/NT4.0 ... 要求 comctl32.dll(公共控件) 的版本为 5.x 或更高.

  (如果你安装的 IE 是 5.x 或更高版本, 那么就不必担心这个问题了)

  注意: Windows 3.1(和 NT3.5x), 请使用 IP Messenger for Win16.

使用说明

  < 安装/卸载 >

  执行 setup.exe 你可以将 IPMsg 安装到指定目录, 或者重新注册到启动组.

  如果需要删除 IPMsg, 请先从控制面板中卸载, 再手动删除 IPMsg 目录.

  < 系统托盘区图标 >

  左键双击图标, 即可打开发送消息窗口.

  右键点击图标, 可进入 [服务设置], [离开] 等.

  < 发送消息窗口 >

  - 发送消息时, 若勾选了 [封装], 则接收者要先打开信封才能看到消息,

  如果你还勾选了 [上锁], 则接收者在打开信封时还需要输入密码.

  (密码是由接收者自己在 [服务设置] 中设置的)

  - 若要发送文件/文件夹, 可直接将文件/文件夹拖入发送消息窗口

  或在发送消息窗口上点击右键, 再选择发送文件或发送文件夹

  - 传送文件/文件夹时, 当接收者还没有保存(下载)文件/文件夹时,

  若发送者关闭或重启了 IPMsg, 则附带的文件信息将被清除,

  接收者将不能继续接收(下载)到此文件.

  - 用户列表前缀符号说明

  ":" 表示用户处于离开模式.

  "|" 表示用户使用的不是 2.0 以上版本的 IPMsg,

  将不支持文件/文件夹的传送, 并且不支持通信数据加密.

  "|"(短线) 表示只支持文件/文件夹的传送.

  - 拖动列表表头标题项可改变其顺序, 并可点击右键选择"保存列表顺序"

  - 在消息输入窗口中, 可使用 Ctrl+Tab 输入制表符 Tab.

  - 在发送消息窗口上点击右键, 可以进入设置显示优先级, 选择工作组,

  搜索用户(Ctrl+F), 传送文件, 传送文件夹, 保存列表顺序, 字体设置,

  窗口大小设置, 固定窗口位置, 列表显示设置.

  - 在用户名上点击右键, 可设置其显示优先级

  优先级按由小到大的顺序排序

  - 通过设置显示优先级, 可将经常联系的用户至于列表顶端,

  或者隐藏不需要联系的用户

  < 接收消息窗口 >

  - 在接收消息窗口上点击右键, 可以进入字体设置,

  窗口大小设置, 固定窗口位置.

  - 接收消息窗口标题栏中的 "+" 或 "-" 表示通信数据使用了加密算法

  "+" 表示 RSA/1024 位, blowfish/128 位加密

  "-" 表示 RSA/512 位, RC2/40 位加密

  - 如果你收到的消息附带了文件, 将会显示出附件按钮.

  点击按钮即可保存文件.

  < 其他 >

  - 如果需要(通过路由器)连接到广域网, 则需要设置广播地址.

  详见广域网设置(广播设置)

  - 其它功能都很容易理解, 你试一试就明白了

操作技巧

  1、隐藏/显示窗口Ctrl+D

  2、按住Ctrl键再点[刷新]可保持现有用户,搜索新上线的用户

  3、打开发送/接收消息窗口Ctrl+Alt+S/R(需要进行详细设置)

  4、打开搜索窗口Ctrl+F

  5、接收到多个文件,保存时可勾选[全部]

软件原理

  局域网聊天软件飞鸽传书是目前比较流行的局域网即时通讯软件,由于历史悠久,它具有比较多的用户。 因为 FreeEIM 的实现原理和飞鸽传书差不多,希望广大用户了解其原理后,在使用时更加得心应手。

  开发多年的飞鸽,在他的基础上增加了些许功能,例如语音对话,这里继续讨论FreeEIM(飞鸽传书),前几天,详细的了解了FreeEIM(飞鸽传书)的网络协议,详细分析并且实现了FreeEIM(飞鸽传书)的消息传递过程,这里就FreeEIM(飞鸽传书)中的文件和文件夹的传输做详细的说明。

  在FreeEIM(飞鸽传书)中,如果要进行文件或者文件夹的传输,首先需要做的就是消息的应答,通过UDP发送文件传输报文,另外的FreeEIM(飞鸽传书)客户端收到报文后,使用TCP协议发送应答报文,这样就开始进行文件的传输了。

  这里开启两个线程,线程1负责文件的传送,线程2负责文件的接受,下边做一一说明。

  首先,我们知道,可以发送多个文件,这些文件需要建立链表保存信息。

  typedef struct file_info

  {

  struct file_info *next; //双向链表

  struct file_info *forward;

  char *file; //文件名

  int type; //文件类型:文件或者文件夹

  int size; //文件大小

  struct sockaddr_in addr; //目标网络信息

  } FILE_INFO;

  [1]文件传送链表由专门的线程维护,这样,线程1就可以专心进行处理文件传输队列就可以了,线程1始终查询这个链表,如果表头为NULL,就说明没有要传输的文件,表头非空,就开始发送报文,获得正确的应答后,就可以开始文件的传输了,文件传输结束,将相应的链表节点删除。这里借鉴了很多程序中使用非常广泛的“命名池”相关的概念,只不过这里我们使用的是“文件池”,可以这么认为,如果有文件要传输,可以不用考虑是否有文件正在传输,只要把要传输的文件放入 “文件池”就可以了 , 同时,不用考虑“文件池”的大小,线程1是文件池的服务线程,它检测文件池的大小,如果非空,就会逐次传输文件。

  这里需要特别注意的就是关于文件夹的传输,这个FreeEIM(飞鸽传书)一个难点,应为对与文件夹的内容是没有显示的,需要我们逐次的判断,在飞鸽传书中是这么处理的,如果是一个文件夹,就发送文件属性为IPMSG_FILE_DIR的信息包,FreeEIM(飞鸽传书)客户端收到这个信息包后,就创建这个文件夹,然后发起发送的FreeEIM(飞鸽传书)客户端,进入文件夹,传送文件夹内的文件,如果该文件夹下,还有文件夹,使用相同的方法,在文件夹内的文件传送结束后,就发送FREEEIM_FILE_RETPARENT信息包,接受的FREEEI_FILE_RETP报文的FreeEIM(飞鸽传书)客户端,执行返回上一级目录,FreeEIM(飞鸽传书)发送端,就需发送目录下的文件。这样循环操作,最终完成文件的传输,这个过程比较难以理解。

  有了上边的知识,开发文件传输功能就变得简单多了,文件的接受也可以类推了,同样开启一个线程维护接受文件链表,逐次接受身下的文件,链表为空时。文件传输会遇到文件读写问题,有的文件发送是被打开了,这样会造成访问违规,所以要有相应的处理,才能让程序更加稳健。

  程序启动时先读取用户配置文件,一般是"*.ini"格式,然后,使用Winsock的广播消息给整个局域网发送一个数据包,这时候,如果其他电脑已经运行了飞鸽传书,那么他收到这个包后,会将包的信息读取出来,当然,这个包里有用户的IP,用户名,性别等等。这样,在用户列表里就多了一个用户了。他的用户检查方式就如此简单而已。至于跨网段的实现,只需简单地修改一下广播地址就行了,如果不考虑速度,你可以给整个internet发广播消息。 消息发送,文件传输这些功能,都比较简单,如果你会网络编程,给你对方IP地址,这些功能实现起来再简单不过了。语音、视屏等,只需编写一些语音视频采集代码,传书的话,就像传文件一样。这里给段广播消息的实现代码吧:

  // 发送广播登陆消息

  void EM_UserLogin::SendLogin_BC(LPEM_DATA msg)

  {

  SOCKET m_socket;

  m_socket = socket(AF_INET, SOCK_DGRAM, IPPROTO_IP);

  if (INVALID_SOCKET == m_socket)

  {

  MessageBox(0, "socket failed.", NULL, MB_OK);

  }

  SOCKADDR_IN sin;sin.sin_addr.s_addr = htonl(INADDR_BROADCAST);

  sin.sin_family = AF_INET;

  sin.sin_port = htons(BROADCAST_SEND_PORT);BOOL bOpt = TRUE;

  if (SOCKET_ERROR == setsockopt(m_socket, SOL_SOCKET, SO_BROADCAST, (char*)&bOpt, sizeof(bOpt)))

  {

  // Error occurred

  ::MessageBox(0,"BC setsockopt error.",0,0);

  return;

  }

  char *tmpBuf = msg->GetBuffer();

  if (SOCKET_ERROR == sendto(m_socket, tmpBuf, msg->GetLength(), 0, (PSOCKADDR)&sin, sizeof(sin)))

  {

  // Error occurred

  ::MessageBox(0,"BC sendto error.",0,0);

  return;

  }closesocket(m_socket);

  

相关信息

  - 所有的设置信息都保存在注册表的以下位置:

  \\HKEY_CURRENT_USER\Software\HSTools\

  用户密码以不可逆加密方式存储.

  *******************************************************************

  * 如果你忘记了密码, 可以在注册表中将此键值删除 *

  * \\HKEY_CURRENT_USER\Software\HSTools\IPMsgEng\PasswordStr *

  *******************************************************************

  - 本软件使用的默认端口为 2425

  若仅使用 UDP 协议的端口, 将不能传送文件/文件夹

  (如果安装了防火墙, 则必须打开相应的 TCP 和 UDP 端口)

  - 本软件为自由软件, 你可以随意传播, 但源码使用请参见许可协议.

  - 只有在启动或退出程序, 使用离开模式, 刷新在线用户时 IPMsg 才会进行消息广播.

  - 本软件由 Microsoft Visual C++ 6.0 编译

广域网设置(广播设置)

  - 主机号全部为 1 的 IP 地址, 即广播地址

  例如, 连接到一个 C 类子网(即 24 位网络号, 8 位主机号), IP 地址为

  aaa.bbb.ccc.ddd, 其广播地址即为: aaa.bbb.ccc.255

  若对方处于另一个私有子网中, 广播可能无效.

  - 更多问题, 请参阅相关资料或咨询你的网络管理员.

  - 若两台主机的连接经过了多个路由器, 请直接指定对方IP地址

  - 拨号上网用户请勾选 [拨号连接]

  当刷新在线用户列表时, 列表不会被清空

补充

  - 启动飞鸽传书前, 你可以指定其运行时使用的端口,

  且可以使用不同的端口打开多个窗口. 用法如下:

  ipmsg.exe 2426 (你可在快捷方式上设置)

  但是你只能与同时也使用该端口的用户通信.

  - 所以你尽可选用你喜欢的端口运行本软件.

  介于 10000 至 60000 可能更安全些.

  你也可以咨询你的网络管理员.

  - 如果有多个网卡(IP), 你可以将飞鸽传书与指定的网卡(IP)进行绑定.

  命令格式如下(你可以在快捷方式上设置):

  ipmsg.exe [端口] /NIC IP地址

  例如:

  C:\>ipmsg.exe /NIC 192.168.10.100

  - 支持命令方式发送消息

  命令格式如下:

  ipmsg.exe [端口] /MSG [/LOG][/SEAL] <主机名或IP地址> <消息>

  例如:

  C:\>ipmsg.exe /MSG /SEAL localhost Hello.

  

支持

  - IPMsg 的技术讨论区是开放的.

  如果你想订阅相关邮件, 请联系 ipmsg-subscribe@ring.gr.jp

  - 欢迎报告 bug, 以及提出建议

  - 如果你有任何疑问, 请 E-mail 联系.

  shirouzu@h.email.ne.jp

  中文版可联系阿志: hiwyz@163.net

  - 发送错误报告, 请勿必记录以下信息:

  软件版本, 操作系统, 故障描述, 以及故障重现方法等.

更新历史

  ver 1.00 ... 日文版 (1996/08/19)

  ver 1.31 ... 英文版/日文版 (1997/09/01)

  ver 2.00 ... 英文版/日文版 (2002/11/19)

  支持文件/文件夹传送

  支持通信数据加密

  ver 2.03 ... Bug 修正 (文件传送引起缓冲溢出)

  广播设置支持主机地址(FQDN)解析

  ver 2.04 ... 增加绑定网卡(IP)功能

  ver 2.05 ... Bug 修正 (2.04版当激活发送/接收消息窗口时,无法注销/关闭系统)

  ver 2.06 ... 很小的调整

  ver 2007 ... 全面调整软件的界面可用性、性能稳定性

飞鸽传书【经典版】(飞鸽传书2011)相关推荐

  1. 击鼓传花java_Java版击鼓传花

    package other; /** * 类似于约瑟夫环游戏 * 给定步长报数,不考虑传入数组长度小于步长 * */ public class RingTest { /** * @param args ...

  2. (飞鸽传书绿色版)网站

    所谓更安全,是指OpenEIM可以屏蔽掉一些网络钓鱼(飞鸽传书绿色版)网站,在您访问这些网站时给出警告.所谓更快,是指OpenEIM提供的DNS查询服务速度比较快,而且使用了高速缓存等技术提高DNS查 ...

  3. 来回奔跑中的飞鸽传书简洁版

    来回奔跑中的飞鸽传书简洁版 2012年11月03日又能保证每个公民的利益,我挑选了一会儿,我也有个幸福的家了,于是,真的好聪明啊,我最大的疑问就是何处是我家,你好,善仿人言. 加油,我直奔陈列剃须刀的 ...

  4. 飞鸽传书绿色版 为什么比较多人用?

    飞鸽传书绿色版 为什么比较多人用?今天的生死与共的友谊 飞鸽传书绿色版,如果不仔细看的话,说,小花猫的飞鸽传书绿色版胡须立马少了一半,停,妈妈回来了,上面写着往前走是一个海洋隧道,不知道,故事的主人翁 ...

  5. 飞鸽传书绿色版 部分数据库被陆续公开了

    2011年12月21日,仅仅是在这一天,攻击者曾经获取到的 飞鸽传书绿色版 部分数据库被陆续公开了.数据库是如何被获取的攻防回合的延续使入侵网游服务端主机系统难度加大,而web应用的登录入口表明了we ...

  6. 有一次面一非常想去的 飞鸽传书绿色版 公司

    有一次面一非常想去的 飞鸽传书绿色版 公司,终面挂了,有一次去了才知道,要找有三年经验的,结果人事mm拉我简历过去了,败得一塌糊涂.面试的好处是,搞定笔试后可以直接接触到面试官,再次感谢所有面过我的面 ...

  7. java飞鸽传书_java简单版飞鸽传书

    [实例简介] 使用java实现的简单版飞鸽传书,可以单聊.群聊.发送文件,使用UPD获取在线用户及聊天,使用TCP发送文件.代码比较简洁,界面工整,学习使用. [实例截图] [核心代码] simple ...

  8. 飞鸽传书绿色版XEIM指出

    构建融合通讯"单一的语音通讯已经不能满足企业在日常通讯.信息管理中的使用习惯.飞鸽传书绿色版 "XEIM指出,在飞鸽传书2007绿色版未来企业通讯规划蓝图中,不仅仅是企业内部沟通方 ...

  9. 技术不能抛开的飞鸽传书绿色版

    网络.诸多技术不能抛开的飞鸽传书绿色版话题,当事物具有了计算能力以后,就要相互之间交流思想或者说传递结果:像人一样,自己再聪明不会交流还是白费,交流使人进步.网络就是诸多终端设备间交流互联的媒介,也是 ...

  10. 1.一步一步写简易版飞鸽传书(一)

    基本窗体的设计 一.前言 注:本系列几篇文章展示了"简易版飞鸽传书"的编写过程,该程序可实现在局域网内收发文字信息和文件的功能.希望可以通过这个样例让读者对java网络编程和IO编 ...

最新文章

  1. 从零入门 Serverless | Knative 带来的极致 Serverless 体验
  2. SAP CRM WebClient UI F2页面里from pre-processing table标签位的含义
  3. SAP UI5里的abap.js
  4. web开发中不同设备浏览器的区分
  5. 95-120-040-源码-Cluster-ClusterEntrypoint
  6. BZOJ 4033: [HAOI2015]树上染色
  7. IDEA快速升级模块版本号
  8. 决策树留一法python代码_西瓜书 第4章 决策树 读书笔记
  9. 计算机桌面性能3.3,显卡天梯图2018年3月最新版 三月桌面显卡性能排行
  10. selenium爬取新浪滚动新闻
  11. 产品能力提升|《简约至上·交互式设计四策略》
  12. python爬虫入门爬取lpl选手价值排行榜
  13. 微生物群也有记忆 | 微生物群能被“训练”
  14. PHPexcel文档 laravelExecl可参考
  15. 鲜为人知的myeclipse配置
  16. LQ-630K/LQ-635K如何安装及更换打印机色带?
  17. CSS精灵图、字体图标
  18. 二维码生成【前端,后端】
  19. ecshop2.72文件结构说明
  20. CMDB开发之基础搭建

热门文章

  1. Maven镜像仓库替换为阿里云镜像仓库
  2. html三因子模型,R语言Fama-French三因子模型实际应用:优化投资组合
  3. 浅谈视频编解码器的工作原理和应用领域
  4. 西门子S7-200 SMART控制步进电机(一)
  5. unity之小地图和聊天室
  6. 尚学堂马士兵struts2 课堂笔记(三)
  7. python波形分析_[转载]频谱分析:基于python画出时域频域波形
  8. Stellar Repair for Excel 6.0.X Crack
  9. 显卡的测试软件是什么,你的显卡是什么水平,用这个软件就知道了
  10. 搭建WEB服务器及常见端口扫描工具分享