标题：飞鸽传书
古代通讯
古代应用飞鸽传书与鸿雁传书是一个意思，就是古人之间联系的一种方法，  飞鸽传书将信件系在鸽子的脚上然后传递给要传递的人。古代通信不方便，所以聪明的人利用鸽子会飞且飞得比较快、会辨认方向等多方面优点，驯化了鸽子，用以提高送信的速度。通常来讲，鸟类本身会认回家的路，就像倦鸟归巢一样，例如我跟用户是朋友，我跟用户当然住在同一个地方，后来我要去别的地方了，我就带着家乡的鸽子离乡背井，有天我有事情要联络用户，我就把字条放在鸽子脚上一种专门放信的东西的里面，再把鸽子放出去，鸽子就会飞到家乡去，用户就会发现那只鸽子和我的信，雁子也是，她们都是利用鸟类的习性。
鸽子对地球磁场的感觉很灵敏，而且特别恋家，这是它们先天具备的优势。但要成为一只信鸽，主要还在于训练。饲养信鸽的根本目的，是为了放翔、竞赛与使用。要想获取理想的信鸽，除了精心选育良种与科学饲养管理外，最重要的就是训练。三者相辅相成，缺一不可。训练的基本原理是根据信鸽的生物学特征及生理特点和“条件反射”原理。训练的根本目的，在于培养、锻炼、提高鸽子的素质，发挥其固有的生物学特征与特长，从而具备完成各种通信和竞翔任务的基本要素及条件。训练的基本内容一般包括：基本训练、放翔训练、竞翔训练、适应训练和运用训练。训练原则上应从幼鸽抓起，由简到繁、由近到远、由白天到夜间、由基础训练到专业训练，总之由易到难进行。下面就训练的基本内容分类详述。
公元前3000年左右，埃及人就开始用鸽子传递书信了。我国也是养鸽古国，有着悠久的历史，隋唐时期，在我国南方广州等地，已开始用鸽子通信。[1]
信鸽的多种训练
基本训练
目的在于培养信鸽对饲养者的服从性和强烈的归巢性。内容包括：喝水、亲和、熟悉巢房、熟悉信号等训练。
幼鸽刚出壳，一两天不吃食并无大害，但不能缺水。起初它们并不知饮水器内有清水可饮，因此，一定要教会它们从哪里喝水。方法是以一手轻轻持鸽，使其喙部接触饮水器水面，它渴了，自然会大口饮水。如此一只一只轮流教，至所有幼鸽均喝了水为止，如此重复训练几次，很快它们就懂得站在饮水器旁边把头伸进去喝水。[2]
名称来由
《山海经》曾经记载，西王母的身边有3只青鸟，它们能够飞越千山万水传递信息，把幸福吉祥快乐的声音，传递到人间。据说西王母曾给汉武帝刘彻写过信，就是派青鸟把信送到汉武帝的宫殿中。
后来，民间根据这样的传说，便利用鸿雁这种鸟进行传书，这就是古人之间联系的一种方式。再后来，就演变成了飞鸽传书。
通讯软件
软件简介飞鸽传书（IPMessenger），是由日本人ShirouzuHiroaki（白水启章）所发明的免费软件，是一款局域网内即时通信软件，基于TCP/IP（UDP）；可运行于多种操作平台（Win、Mac、UNIX、Java），并实现跨平台信息交流。不需要服务器支持，支持文件/文件夹的传送（2.00版以上），通讯数据采用RSA/Blofish加密（2.00版以上），十分小巧，简单易用，而且用户可以完全免费使用它；2011年已有的版本包括：Win32，Win16，  飞鸽传书正版官方图标MacOS，MacOSX，X11，GTK，GNOME，Java等，并且公开源代码。系统要求MicrosoftWindows95/98/Me/NT4.0/2000/XP/2003
95/98/NT4.0；要求comctl32.dll（公共控件）的版本为5.x或更高。
（如果用户安装的IE是5.x或更高版本，那么就不必担心这个问题了）
注意：Windows3.1（和NT3.5x），请使用IPMessengerforWin16。使用说明安装/卸载
执行setup.exe用户可以将IPMsg安装到指定目录，或者重新注册到启动组，  飞鸽传书[3]
如果需要删除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．接收到多个文件，保存时可勾选（全部）。软件原理局域网聊天软件[4]飞鸽传书是目前比较流行的局域网即时通讯软件，由于历史悠久，它具有比较多的用户。因为FreeEIM的实现原理和飞鸽传书差不多，希望广大用户了解其原理后，在使用时更加得心应手。
开发多年的飞鸽，在他的基础上增加了些许功能，例如语音对话，这里继续讨论FreeEIM（飞鸽传书），前几天，详细的了解了FreeEIM（飞鸽传书）的网络协议，详细分析并且实现了FreeEIM（飞鸽传书）的消息传递过程，这里就FreeEIM（飞鸽传书）中的文件和文件夹的传输做详细的说明。
在FreeEIM（飞鸽传书）中，如果要进行文件或者文件夹的传输，首先需要做的就是消息的应答，通过UDP发送文件传输报文，另外的FreeEIM（飞鸽传书）客户端收到报文后，使用TCP协议发送应答报文，这样就开始进行文件的传输了。
这里开启两个线程，线程1负责文件的传送，线程2负责文件的接受，下边做一一说明。
首先，我们知道，可以发送多个文件，这些文件需要建立链表保存信息。
typedefstructfile_info
structfile_info*next；//双向链表
structfile_info*forward；
char*file；//文件名
inttype；//文件类型：文件或者文件夹
intsize；//文件大小
structsockaddr_inaddr，//目标网络信息
}FILE_INFO；
文件传送链表由专门的线程维护，这样，线程1就可以专心进行处理文件传输队列就可以了，线程1始终查询这个链表，如果表头为NULL，就说明没有要传输的文件，表头非空，就开始发送报文，获得正确的应答后，就可以开始文件的传输了，文件传输结束，将相应的链表节点删除。这里借鉴了很多程序中使用非常广泛的“命名池”相关的概念，只不过这里我们使用的是“文件池”，可以这么认为，如果有文件要传输，可以不用考虑是否有文件正在传输，只要把要传输的文件放入“文件池”就可以了，同时，不用考虑“文件池”的大小，线程1是文件池的服务线程，它检测文件池的大小，如果非空，就会逐次传输文件。
这里需要特别注意的就是关于文件夹的传输，这个FreeEIM（飞鸽传书）一个难点，因为对于文件夹的内容是没有显示的，需要我们逐次的判断，在飞鸽传书中是这么处理的，如果是一个文件夹，就发送文件属性为IPMSG_FILE_DIR的信息包，FreeEIM（飞鸽传书）客户端收到这个信息包后，就创建这个文件夹，然后发起发送的FreeEIM（飞鸽传书）客户端，进入文件夹，传送文件夹内的文件，如果该文件夹下，还有文件夹，使用相同的方法，在文件夹内的文件传送结束后，就发送FREEEIM_FILE_RETPARENT信息包，接受的FREEEI_FILE_RETP报文的FreeEIM（飞鸽传书）客户端，执行返回上一级目录，FreeEIM（飞鸽传书）发送端，就需发送目录下的文件。这样循环操作，最终完成文件的传输，这个过程比较难以理解。
有了上边的知识，开发文件传输功能就变得简单多了，文件的接受也可以类推了，同样开启一个线程维护接受文件链表，逐次接受身下的文件，链表为空时。文件传输会遇到文件读写问题，有的文件发送是被打开了，这样会造成访问违规，所以要有相应的处理，才能让程序更加稳健。
程序启动时先读取用户配置文件，一般是"*.ini"格式，然后，使用Winsock的广播消息给整个局域网发送一个数据包，这时候，如果其他电脑已经运行了飞鸽传书，那么他收到这个包后，会将包的信息读取出来，当然，这个包里有用户的IP，用户名，性别等等。这样，在用户列表里就多了一个用户了。他的用户检查方式就如此简单而已。至于跨网段的实现，只需简单地修改一下广播地址就行了，如果不考虑速度，用户可以给整个internet发广播消息。消息发送，文件传输这些功能，都比较简单，如果用户会网络编程，给用户对方IP地址，这些功能实现起来再简单不过了。语音、视屏等，只需编写一些语音视频采集代码，传书的话，就像传文件一样；这里给段广播消息的实现代码吧：
//发送广播登陆消息相关信息所有的设置信息都保存在注册表的以下位置：
\\HKEY_CURRENT_USER\Software\HSTools\
用户密码以不可逆加密方式存储
*******************************************************************
*如果用户忘记了密码，可以在注册表中将此键值删除*
*\\HKEY_CURRENT_USER\Software\HSTools\IPMsgEng\PasswordStr*
*******************************************************************
-本软件使用的默认端口为2425
若仅使用UDP协议的端口，将不能传送文件/文件夹
（如果安装了防火墙，则必须打开相应的TCP和UDP端口）
-本软件为自由软件，用户可以随意传播，但源码使用请参见许可协议。
-只有在启动或退出程序，使用离开模式，刷新在线用户时IPMsg才会进行消息广播。
-本软件由MicrosoftVisualC++6.0编译广域网设置-主机号全部为1的IP地址，即广播地址
例如，连接到一个C类子网（即24位网络号，8位主机号），IP地址为
aaa.bbb.ccc.ddd，其广播地址即为：aaa.bbb.ccc.255
若对方处于另一个私有子网中，广播可能无效。
-更多问题，请参阅相关资料或咨询用户的网络管理员.
-若两台主机的连接经过了多个路由器，请直接指定对方IP地址
-拨号上网用户请勾选[拨号连接]
当刷新在线用户列表时，列表不会被清空。补充启动飞鸽传书前，用户可以指定其运行时使用的端口，
且可以使用不同的端口打开多个窗口.用法如下：
ipmsg.exe2426（用户可在快捷方式上设置）
但是用户只能与同时也使用该端口的用户通信.
-所以用户尽可选用用户喜欢的端口运行本软件.
介于10000至60000可能更安全些.
用户也可以咨询用户的网络管理员.
如果有多个网卡（IP），用户可以将飞鸽传书与指定的网卡（IP）进行绑定。
命令格式如下（用户可以在快捷方式上设置）：
ipmsg.exe[端口]/NICIP地址
例如：C：\>ipmsg.exe/NIC192.168.10.100；支持命令方式发送消息
命令格式如下
ipmsg.exe[端口]/MSG[/LOG][/SEAL]<主机名或IP地址><消息>
例如：C：\>ipmsg.exe/MSG/SEALlocalhostHello。支持-IPMsg的技术讨论区是开放的.
如果用户想订阅相关邮件，请联系
-欢迎报告bug，以及提出建议
-如果用户有任何疑问，请E-mail联系.
中文版可联系阿志
-发送错误报告，请勿必记录以下信息：
软件版本，操作系统，故障描述，以及故障重现方法等。更新历史ver1.00——日文版（1996/08/19）
ver1.31——英文版/日文版（1997/09/01）
ver2.00——英文版/日文版（2002/11/19）
支持文件/文件夹传送
支持通信数据加密
ver2.03——Bug修正（文件传送引起缓冲溢出）
广播设置支持主机地址（FQDN）解析
ver2.04——增加绑定网卡（IP）功能
ver2.05——Bug修正（2.04版当激活发送/接收消息窗口时，无法注销/关闭系统）
ver2.06——很小的调整
ver2007——全面调整软件的界面可用性、性能稳定性。
最新版本
飞鸽传书的最新版叫做飞鸽传书2010；飞鸽传书2010是最新版支持内、外网、混合网络互通的多媒体飞鸽系列软件，具备表情、截图、语音、视频、远程控制多媒体通讯功能，绿色软件即装即用，内联飞鸽传书，也可登录联信UM/Gmail/Jabber等XMPP标准通讯服务器，实现集群即时通讯互通。
版本
飞鸽传书：分PC版、手机版、平板电脑版！PC 飞鸽传书1.飞鸽传书（简捷版）：飞鸽传书简捷版，简单的交互界面，操作更便捷，性能更稳定，人性化局域网通讯软件。
2.飞鸽UM企业即时通讯系统：架设飞鸽UM服务器，部署简便，轻松搭建企业内外互通、异地协同办公的企业即时通讯系统。
3.飞鸽传书（UM版）：飞鸽传书2011，绿色软件，功能强大，支持语音、视频、群组、远程控制等功能。
4.Linux版：Linux的QT简捷界面版本，支持文字、文件及文件夹的传输。
5.Mac版：苹果Mac版本飞鸽传书，支持文字、文件及文件夹的局域网传输。
6.经典飞鸽传书：3.0早期飞鸽传书，仅支持文字、文件及文件夹的传输，功能简单，操作方便。手机飞鸽传书1.安卓Android版：Android版本手机飞鸽传书，通过Wi-Fi实现手机对手机、手机对PC之间即时通讯，适用于各类Android机型。
2.Symbian版：Symbian版本手机飞鸽传书，通过Wi-Fi局域网实现手机对手机、手机对PC之间即时通讯。
3.苹果iPhone版：iPhone版本手机飞鸽传书，通过Wi-Fi局域网实现手机对手机、手机对PC之间即时通讯。
4.Windows Mobile版：Windows Mobile版手机飞鸽传书，可支持Wi-Fi局域网即时通讯、文件传输。平板电脑飞鸽传书1.安卓Android版：Android版本手机飞鸽传书，通过Wi-Fi实现手机对手机、手机对PC之间即时通讯，适用于各类Android机型。
2.Meego版：Meego版平板电脑飞鸽传书进入研发最后阶段，敬请期待！
3.苹果iPad版：iPad版本飞鸽传书，通过Wi-Fi局域网实现手机对手机、手机对PC之间即时通讯。
4.Win7版：Win版本平板电脑飞鸽传书，通过Wi-Fi实现局域网与PC之间即时通讯，适用于各类Win7平板机型。