飞鸽传书源码解析(飞鸽传书是怎么实现的)
本文目录一览:
- 1、【飞鸽传书软件】 飞鸽传输软件可以局域网内聊天,请问是怎样实现的呢?如果有点吗实现代码
- 2、飞鸽传书的现代通讯
- 3、求飞鸽传书VC++源码!
- 4、飞鸽传书的用法
- 5、飞鸽传书vb版源代码?
- 6、飞鸽传书的源代码,要换页面的?
【飞鸽传书软件】 飞鸽传输软件可以局域网内聊天,请问是怎样实现的呢?如果有点吗实现代码
局域网聊天软件飞鸽传书是目前比较流行的局域网即时通讯软件,由于历史悠久,它具有比较多的用户。 因为 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);
} 我们要向QQ、MSN、ICQ、AIM等大型即时通讯看齐,和他们对比,XEIM只是班级里面的一个差生,要赶得上这些优秀的同学,只有付出更大的努力才有可能追上甚至超赶他们。但是,你什么也不做,这会变成一个笑话。飞鸽传书的实现原理:(1)最关键的是局域网用户列表的建立;飞鸽启动时使用UDP协议向255.255.255.255这个广播地址发送广播包,默认端口是2425。广播包内容包含用户名、工作组、主机名、IP等信息;
已启动飞鸽的用户通过2425端口收到此广播包后,就会在自己的用户列表中添加这个用户的用户名、工作组等信息,同时向对方IP发送本机用户的个人信息;从而双方都能建立起用户列表;(2)刷新用户列表时发送的广播包和启动时差不多,只不过返回的标识信息略有不同;可以做一个小工具,监控2425端口内存流,就能截获刷新和聊天时的消息。(3)传送聊天信息时同样使用UDP协议;由于UDP协议是无连接协议,传输速度快,但是没有确认机制,是不可靠的协议,需要自己定义返回信息的标志来判断对方是否收到信息;(4)用户离线时发送一个离线广播包到255.255.255.255,收到此广播包的用户,根据包中的IP地址(也可能是多种判断标志或者包含硬件标识,比如网卡地址等)删除对方的用户列表信息;
(5)广域网无法直接使用广播方式,靠手工添加"局域网外广播列表"来建立相互的关系;(6)飞鸽传送文件是使用TCP协议,端口2425;其他一些资料:1.飞鸽使用C++语言,开发工具:Visual C++ 4.1, 6.0, or later;2.飞鸽公开源码,在作者(来自日本广岛的白水启章)和汉化者(阿志)网站下载源码,源码注释为日文;可以使用VC++修改、编译;3.飞鸽传书是来自日本的软件,日文版是它的第一版本;此外还有中文,英文,韩文,葡萄牙文等语言;4.飞鸽使用的加密算法:RSA、Blowfish、RC;5.飞鸽可以使用命令行方式发送信息,命令格式如下: ipmsg [端口] /MSG [/LOG][/SEAL] 主机名或IP地址 消息 可以使用IPMsg [端口] 命令改变默认端口,并同时启动多个实例,但是修改后只有使用相同端口的用户才能收到相互的信息;6.飞鸽非安装版,并不是纯绿色软件,直接删除会在注册表留下垃圾键值; * 飞鸽把所有设置信息都保存在注册表的以下位置: \\HKEY_CURRENT_USER\Software\HSTools\ 用户密码以不可逆加密方式存储. * 如果你忘记了密码, 可以在注册表中将此键值删除,清除密码*\\HKEY_CURRENT_USER\Software\HSTools\IPMsgEng\PasswordStr7.飞鸽一次传送文件数达到几千个时,有丢失文件的可能,怀疑是飞鸽的一个bug,而传输大文件则没有问题;8.飞鸽最稳定的正式版本是V2.06;目前v2.50 alpha6 版正在测试,尚未正式发布;其他如2.71,2007绿色版为修改版本,并非正版;
飞鸽传书的现代通讯
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安装到指定目录,或者重新注册到启动组,
如果需要删除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负责文件的接受,下边做一一说明。
首先,我们知道,可以发送多个文件,这些文件需要建立链表保存信息。
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——全面调整软件的界面可用性、性能稳定性。
ver2014——全新界面和用户体验,高效文件传输
求飞鸽传书VC++源码!
那你可就很难找了啊,以前我上网搜了很多网站根本没有英文注释的,最后还是一个乱码的,没办法,你自己写个算了。
飞鸽传书的用法
一 “ 飞鸽传书2007绿色版” 下载说明
一个局域网通信软件,支持局域网间发信息、传送文件、文件夹、多文件(或文件夹),速度非常快。有了它,局域网间传送文件不必再共享来共享去的了。而且,该软件极度绿色哦:单个执行文件,完全与注册表、初始配置文件没有关系。IPMsg 是一款局域网内即时通信软件, 基于TCP/IP(UDP). 可运行于多种操作平台(Win/Mac/UNIX/Java), 并实现跨平台信息交流.- 不需要服务器支持.- 支持文件/文件夹的传送 (2.00版以上) - 通讯数据采用 RSA/Blofish 加密 (2.00版以上)- 十分小巧, 简单易用, 而且你可以完全免费使用它。 目前已有的版本包括: Win32, Win16, MacOS, MacOSX, X11, GTK, GNOME,Java 等, 并且公开源代码.“飞鸽传书 IP Messenger”唯一官方中文网址为: 中文域名:飞鸽传书
二 下载地址: IT168 软件屋 天府软件 SOHU 天极 华军软件园 斑马网 天空软件 硅谷动力 CSDN 中国源码 新浪网 飞翔下载
三 关于 飞鸽传书2007绿色版 的重要声明
最近接到举报,有人假借本站之名在各大下载网站发布了“飞鸽传书 IP Messenger 2.71”、“QQ飞鸽传书”等,对此,我们郑重声明,“飞鸽传书 IP Messenger”目前的较新版本为2.06版、2007绿色版,所谓的2.71版本根本不存在,其提供的软件包已被众多杀毒安全软件查出有病毒,请大家千万不要下载,以免威胁到自己的电脑安全! 对于以“飞鸽传书”为名制造此恶意软件者,我们保留进一步追究其法律责任的权利!飞鸽传书追求INTERNET免费共享的精神,不断升级创新网络通信功能,造福广大网民!
四 飞鸽传书2007绿色版 的相关说明
系统要求 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个性化,
如选择用户分组,自定义用户列表显示,搜索用户,
设置窗口大小,固定窗口位置等。
- 若要发送文件/文件夹, 可直接将文件/文件夹拖入发送消息窗口
或在发送消息窗口上点击右键, 再选择发送文件或发送文件夹
- 传送文件/文件夹时, 当接收者还没有保存(下载)文件/文件夹时,
若发送者关闭或重启了 IPMsg, 则附带的文件信息将被清除,
接收者将不能继续接收(下载)到此文件.
- 用户列表前缀符号说明
":" 表示用户处于离开模式.
"|" 表示用户使用的不是 2.0 以上版本的 IPMsg,
将不支持文件/文件夹的传送, 并且不支持通信数据加密.
"|"(短线) 表示只支持文件/文件夹的传送.
- 拖动列表表头标题项可改变其顺序, 并可点击右键选择"保存列表顺序"
- 在消息输入窗口中, 可使用 Ctrl+Tab 输入制表符 Tab.
- 在发送消息窗口上点击右键, 可以进入设置显示优先级, 选择工作组,
搜索用户(Ctrl+F), 传送文件, 传送文件夹, 保存列表顺序, 字体设置,
窗口大小设置, 固定窗口位置, 列表显示设置.
- 在用户名上点击右键, 可设置其显示优先级
优先级按由小到大的顺序排序
- 通过设置显示优先级, 可将经常联系的用户至于列表顶端,
或者隐藏不需要联系的用户
接收消息窗口
- 在接收消息窗口上点击右键, 可以进入字体设置,
窗口大小设置, 固定窗口位置.
- 接收消息窗口标题栏中的 "+" 或 "-" 表示通信数据使用了加密算法
"+" 表示 RSA/1024 位, blowfish/128 位加密
"-" 表示 RSA/512 位, RC2/40 位加密
- 如果你收到的消息附带了文件, 将会显示出附件按钮.
点击按钮即可保存文件.
其他
- 如果需要(通过路由器)连接到广域网, 则需要设置广播地址.
详见广域网设置(广播设置)
- 其它功能都很容易理解, 你试一试就明白了
--------------------------------------------------------------------------------
5. 相关信息
- 所有的设置信息都保存在注册表的以下位置:
\\HKEY_CURRENT_USER\Software\HSTools\
用户密码以不可逆加密方式存储.
*******************************************************************
* 如果你忘记了密码, 可以在注册表中将此键值删除 *
* \\HKEY_CURRENT_USER\Software\HSTools\IPMsgEng\PasswordStr *
*******************************************************************
- 本软件使用的默认端口为 2425
若仅使用 UDP 协议的端口, 将不能传送文件/文件夹
(如果安装了防火墙, 则必须打开相应的 TCP 和 UDP 端口)
- 本软件为自由软件, 你可以随意传播, 但源码使用请参见许可协议.
- 只有在启动或退出程序, 使用离开模式, 刷新在线用户时 IPMsg 才会进行消息广播.
- 本软件由 Microsoft Visual C++ 6.0 编译
--------------------------------------------------------------------------------
6. 广域网设置(广播设置)
- 主机号全部为 1 的 IP 地址, 即广播地址
例如, 连接到一个 C 类子网(即 24 位网络号, 8 位主机号), IP 地址为
aaa.bbb.ccc.ddd, 其广播地址即为: aaa.bbb.ccc.255
若对方处于另一个私有子网中, 广播可能无效.
- 更多问题, 请参阅相关资料或咨询你的网络管理员.
- 若两台主机的连接经过了多个路由器, 请直接指定对方IP地址
- 拨号上网用户请勾选 [拨号连接]
当刷新在线用户列表时, 列表不会被清空
--------------------------------------------------------------------------------
7. 补充
- 启动飞鸽传书前, 你可以指定其运行时使用的端口,
且可以使用不同的端口打开多个窗口. 用法如下:
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.
- 操作技巧.
1. 隐藏/显示 窗口 Ctrl + D
2. 按住 Ctrl 键再点 [刷新] 可保持现有用户, 搜索新上线的用户
3. 打开发送/接收消息窗口 Ctrl + Alt + S / R (需要进行详细设置)
4. 打开搜索窗口 Ctrl + F
5. 接收到多个文件, 保存时可勾选 [全部]
--------------------------------------------------------------------------------
8. 支持
- IPMsg 的技术讨论区是开放的.
如果你想订阅相关邮件, 请联系 ipmsg-subscribe@ring.gr.jp
- 欢迎报告 bug, 以及提出建议
- 如果你有任何疑问, 请 E-mail 联系.
shirouzu@h.email.ne.jp
飞鸽传书 (IP Messenger) 2007 绿色版 可联系飞鸽:
- 发送错误报告, 请勿必记录以下信息:
软件版本, 操作系统, 故障描述, 以及故障重现方法等.
--------------------------------------------------------------------------------
9. 更新历史
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 ... 全面调整软件的界面可用性、性能稳定性
--------------------------------------------------------------------------------
10. 感谢
- IPMsg 技术讨论区的所有成员
- Mr.Kanazawa (英文信息修正)
- 所有报告软件 bug 以及提出建议的朋友.
--------------------------------------------------------------------------------
- 官方站点:
- 中文版站点:
飞鸽传书vb版源代码?
第一部分 菜单部分
107 MENU
LANGUAGE LANG_CHINESE, 0x2
{
POPUP "Floating"
{
MENUITEM "删除所有回执窗口", 10034
MENUITEM "将窗口置于最前端", 10011
MENUITEM SEPARATOR
MENUITEM "服务设置...", 10001
MENUITEM "查看通信记录", 10014
MENUITEM SEPARATOR
MENUITEM "关于...", 10008
MENUITEM "退出", 10003
}
}
121 MENU
LANGUAGE LANG_CHINESE, 0x2
{
MENUITEM "列表显示...", 10017
MENUITEM "编辑区域...", 10018
MENUITEM "恢复默认值", 10019
}
122 MENU
LANGUAGE LANG_CHINESE, 0x2
{
MENUITEM "消息来自...", 10034
MENUITEM "消息正文...", 10018
MENUITEM "恢复默认值", 10019
}
123 MENU
LANGUAGE LANG_CHINESE, 0x2
{
MENUITEM "存储为默认值", 10015
MENUITEM "恢复默认值 (临时)", 10016
}
124 MENU
LANGUAGE LANG_CHINESE, 0x2
{
POPUP "Floating"
{
MENUITEM "离开信息", 10012
MENUITEM "版本信息", 10033
}
}
第二部分 对话框
101 DIALOGEX 0, 0, 224, 231
STYLE DS_SETFOREGROUND | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
EXSTYLE WS_EX_ACCEPTFILES
CAPTION "飞鸽传书 2007 绿色版"
LANGUAGE LANG_CHINESE, 0x2
FONT 9, "宋体"
{
CONTROL "", 1001, EDIT, ES_LEFT | ES_MULTILINE | ES_AUTOVSCROLL | ES_NOHIDESEL | ES_WANTRETURN | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_VSCROLL | WS_GROUP | WS_TABSTOP, 5, 141, 214, 39
CONTROL "发送(S)", 1, BUTTON, BS_DEFPUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 22, 187, 72, 18
CONTROL "封装(E)", 1004, BUTTON, BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 118, 189, 43, 13
CONTROL "上锁(K)", 1005, BUTTON, BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 168, 189, 43, 13
CONTROL "刷新(R)", 1064, BUTTON, BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 173, 66, 46, 18 , 0x00020000
CONTROL "在线用户\n1000", 1051, STATIC, SS_CENTER | WS_CHILD | WS_VISIBLE | WS_GROUP, 177, 43, 36, 18
CONTROL "", 1091, STATIC, SS_LEFT | SS_SUNKEN | WS_CHILD | WS_VISIBLE | WS_GROUP, 5, 114, 214, 8
CONTROL "List1", 1045, "SysListView32", LVS_REPORT | LVS_SHAREIMAGELISTS | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP, 5, 6, 165, 102 , 0x00000200
CONTROL "ipmsg.exe(100KB)", 1158, BUTTON, BS_PUSHBUTTON | BS_CENTER | BS_FLAT | WS_CHILD | WS_DISABLED | WS_TABSTOP, 5, 123, 214, 16
CONTROL 171, 1171, STATIC, SS_BITMAP | SS_NOTIFY | SS_SUNKEN | WS_CHILD | WS_VISIBLE, 174, 6, 46, 31
CONTROL "关于(A)", 1170, BUTTON, BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 173, 87, 46, 18 , 0x00020000
CONTROL "欢迎使用飞鸽传书!更多功能请点鼠标右键", 1172, STATIC, SS_CENTER | SS_CENTERIMAGE | SS_SUNKEN | WS_CHILD | WS_VISIBLE | WS_GROUP, 19, 211, 188, 15 , 0x00000201
}
103 DIALOGEX 0, 0, 214, 219
STYLE DS_MODALFRAME | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "服务设置"
LANGUAGE LANG_CHINESE, 0x2
FONT 9, "宋体"
{
CONTROL "检查信封是否被打开", 1017, BUTTON, BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 12, 50, 99, 10
CONTROL "不自动弹出收到的消息", 1026, BUTTON, BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 12, 64, 99, 10
CONTROL "无声音提示", 1015, BUTTON, BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 12, 78, 99, 10
CONTROL "默认为封装发送", 1004, BUTTON, BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 12, 92, 99, 10
CONTROL "默认为回复时引用原文", 1018, BUTTON, BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 12, 106, 99, 10
CONTROL "", 1034, EDIT, ES_LEFT | ES_AUTOHSCROLL | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP, 16, 15, 69, 12
CONTROL "", 1081, COMBOBOX, CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_SORT | CBS_DISABLENOSCROLL | WS_CHILD | WS_VISIBLE | WS_VSCROLL | WS_TABSTOP, 119, 15, 79, 66
CONTROL "详细/记录 设置", 1057, BUTTON, BS_PUSHBUTTON | BS_CENTER | BS_VCENTER | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 128, 70, 79, 14
CONTROL "URL 链接设置", 1090, BUTTON, BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 128, 89, 79, 14
CONTROL "密码设置", 1068, BUTTON, BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 128, 108, 79, 14
CONTROL "", 1033, EDIT, ES_LEFT | ES_AUTOHSCROLL | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP, 18, 153, 81, 13
CONTROL "=", 1025, BUTTON, BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 108, 149, 14, 11
CONTROL "=", 1024, BUTTON, BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 108, 165, 14, 11
CONTROL "", 1020, LISTBOX, LBS_STANDARD | LBS_NOINTEGRALHEIGHT | LBS_EXTENDEDSEL | LBS_DISABLENOSCROLL | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 128, 139, 73, 43
CONTROL "拨号连接", 1070, BUTTON, BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 28, 173, 59, 10
CONTROL "确定", 1, BUTTON, BS_DEFPUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 73, 196, 55, 15
CONTROL "用户名", -1, BUTTON, BS_GROUPBOX | BS_CENTER | WS_CHILD | WS_VISIBLE, 6, 3, 91, 29
CONTROL "工作组", -1, BUTTON, BS_GROUPBOX | BS_CENTER | WS_CHILD | WS_VISIBLE, 108, 3, 99, 30
CONTROL "发送/接收 选项", -1, BUTTON, BS_GROUPBOX | WS_CHILD | WS_VISIBLE, 6, 37, 111, 85
CONTROL "局域网外广播设置", -1, BUTTON, BS_GROUPBOX | WS_CHILD | WS_VISIBLE, 6, 126, 201, 64
CONTROL "添加要广播的主机地址", -1, STATIC, SS_LEFT | WS_CHILD | WS_VISIBLE | WS_GROUP, 12, 139, 83, 9
CONTROL "应用", 1130, BUTTON, BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 139, 196, 55, 15
CONTROL "要设置显示优先级请\n在发送窗口上点右键", -1, STATIC, SS_CENTER | WS_CHILD | WS_VISIBLE | WS_GROUP, 128, 42, 79, 19 , 0x00020000
}
106 DIALOG 0, 0, 266, 175
STYLE WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
CAPTION "收到消息"
LANGUAGE LANG_CHINESE, 0x2
FONT 9, "宋体"
{
CONTROL "打开信封 (O)", 1052, BUTTON, BS_PUSHBUTTON | BS_CENTER | BS_VCENTER | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 21, 56, 224, 79
CONTROL "回复(R)", 1, BUTTON, BS_DEFPUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 120, 153, 55, 15
CONTROL "关闭(C)", 2, BUTTON, BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 50, 153, 55, 15
CONTROL "", 1031, EDIT, ES_LEFT | ES_MULTILINE | ES_AUTOVSCROLL | ES_NOHIDESEL | ES_READONLY | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_VSCROLL | WS_GROUP | WS_TABSTOP, 5, 75, 256, 69
CONTROL "引用原文(Q)", 1018, BUTTON, BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 189, 155, 64, 12
CONTROL "消息来自...", 1053, BUTTON, BS_GROUPBOX | WS_CHILD | WS_VISIBLE, 5, 5, 256, 36
CONTROL "Static", 1029, STATIC, SS_CENTER | SS_NOPREFIX | WS_CHILD | WS_VISIBLE | WS_GROUP, 8, 15, 250, 10
CONTROL "Static", 1030, STATIC, SS_CENTER | WS_CHILD | WS_VISIBLE | WS_GROUP, 8, 28, 250, 10
CONTROL "ipmsg.exe(100KB)", 1158, BUTTON, BS_PUSHBUTTON | BS_CENTER | BS_FLAT | WS_CHILD | WS_DISABLED | WS_TABSTOP, 5, 48, 256, 20
}
112 DIALOGEX 0, 0, 172, 106
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "关于飞鸽传书"
LANGUAGE LANG_CHINESE, 0x2
FONT 9, "宋体"
{
CONTROL "确定", 1, BUTTON, BS_DEFPUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 58, 84, 56, 14
CONTROL 168, 105, STATIC, SS_ICON | SS_NOTIFY | WS_CHILD | WS_VISIBLE, 5, 5, 20, 20
CONTROL "Copyright(c)1996-2004 H.Shirouzu\n 飞鸽传书 2007 绿色版 由Phay制作 ", -1, STATIC, SS_CENTER | WS_CHILD | WS_VISIBLE | WS_GROUP, 5, 59, 162, 19
CONTROL "", 1168, BUTTON, BS_PUSHBUTTON | BS_CENTER | BS_VCENTER | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 5, 31, 162, 22 , 0x00020201
CONTROL "飞鸽传书 IP Messenger 2007\n绿色版", -1, STATIC, SS_CENTER | SS_SUNKEN | WS_CHILD | WS_VISIBLE | WS_GROUP, 30, 5, 130, 22
}
115 DIALOGEX 0, 0, 254, 233
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "详细/记录 设置"
LANGUAGE LANG_CHINESE, 0x2
FONT 9, "宋体"
{
CONTROL "自动最小化回执提示窗口", 1061, BUTTON, BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 15, 16, 168, 10
CONTROL "回复时不自动关闭收到的消息", 1054, BUTTON, BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 15, 64, 168, 10
CONTROL "启用热键 (Ctrl+Alt+S,R)", 1129, BUTTON, BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 15, 40, 168, 10
CONTROL "将按钮 [发送/回复] 改称为 [开火/还击]", 1006, BUTTON, BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 15, 52, 168, 10
CONTROL "单击图标打开发送窗口 (不勾选则为双击)", 1007, BUTTON, BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 15, 28, 168, 10
CONTROL "离开时不自动弹出收到的消息", 1056, BUTTON, BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 15, 76, 168, 10
CONTROL "", 1083, EDIT, ES_LEFT | ES_AUTOHSCROLL | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP, 198, 30, 32, 12
CONTROL "提示声音", 1032, BUTTON, BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 15, 91, 40, 14 , 0x00020000
CONTROL "", 1075, EDIT, ES_LEFT | ES_AUTOHSCROLL | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP, 64, 91, 139, 13
CONTROL "在线图标", 1021, BUTTON, BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 15, 109, 40, 14 , 0x00020000
CONTROL "", 1066, EDIT, ES_LEFT | ES_AUTOHSCROLL | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP, 64, 109, 53, 13
CONTROL "离线图标", 1022, BUTTON, BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 133, 109, 40, 14 , 0x00020000
CONTROL "", 1067, EDIT, ES_LEFT | ES_AUTOHSCROLL | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP, 181, 109, 53, 13
CONTROL "启用通信记录", 1060, BUTTON, BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 15, 150, 110, 10
CONTROL "上锁信件在被打开之前不得记录", 1063, BUTTON, BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 33, 163, 159, 10
CONTROL "记录文件", 1019, BUTTON, BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 15, 189, 40, 14 , 0x00020000
CONTROL "", 1062, EDIT, ES_LEFT | ES_AUTOHSCROLL | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP, 64, 189, 139, 13
CONTROL "确定", 1, BUTTON, BS_DEFPUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 102, 211, 53, 15
CONTROL "详细功能设置", -1, BUTTON, BS_GROUPBOX | WS_CHILD | WS_VISIBLE, 7, 4, 240, 124
CONTROL "通信记录设置", 1065, BUTTON, BS_GROUPBOX | WS_CHILD | WS_VISIBLE, 7, 136, 240, 72
CONTROL "引文标识", -1, BUTTON, BS_GROUPBOX | WS_CHILD | WS_VISIBLE, 189, 18, 50, 29
CONTROL "应用", 1130, BUTTON, BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 168, 211, 53, 15
CONTROL "记录用户/登录名", 1071, BUTTON, BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 33, 175, 83, 9
CONTROL "记录 IP 地址", 1074, BUTTON, BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 134, 175, 83, 9
}
飞鸽传书的源代码,要换页面的?
飞鸽传书 (IP Messenger V2.06)是一款基于 TCP/IP(UDP)的局域网内即时通信软件,2.00以上版本支持局域网内发信息、传送文件、文件夹、多文件(或文件夹),通讯数据采用 RSA/Blofish 加密 (2.00版以上),速度非常快,采用BSD License开源许可协议发布。数据通讯不需要建立服务器、直接在两台电脑间通信和数据传输,支持文件及文件目录的传输,具有安全快捷以及小巧方便等优异特点,因此很多公司都采用它作为部门、公司内部的IM即时通信工具。IP Messenger在程序结构方面采用了Windows SDK处理结构,通信方面采用了TCP/UDP通信方式,在文件传输处理方面采用文件映射技术等。最新版(2.50 alpha6)的Log文件支持 UTF-8编码格式,增加了气球提示。(1)从官方主页 下载IP Messenger的源代码压缩包ipmsg206src.zip,解压缩得到如下图所示的目录;(2)IP Messenger的主要目录及其主要源文件的描述 属性 名称 描述 目录 SRC 工程文件源代码和INSTALL目录 文件 IPMSG.MAK VC++ 4及以前版本使用的工程文件,用来指定如何建立一个工程,VC++ 6把MAK文件转换成DSP文件来处理 IPMSG.MDP 后缀MDP(Microsoft DevStudio Project的简称)是老版本的项目文件,相当于DSP文件 PROT-ENG.TXT 英文版的协议描述 PROTOCOL.TXT 日文版的协议描述 README.TXT 英文版的README README-J.TXT 日文版的README (3)IP Messenger的SRC目录及主要文件属性 名称 描述 目录 INSTALL 安装程序源代码目录 BLOWFISH.CPP 加密算法源文件 BLOWFISH.H 加密算法头文件 BLOWFISH.H2 加密算法随机数头文件 CFG.CPP 系统配置源文件 IPMSG.CPP IPMSG的APP源文件 IPMSG.H IPMSG头文件 LOGDLG.CPP 日志DLG源文件 LOGMNG.CPP 日志处理源文件 MAINWIN.CPP IP Messenger主窗口源文件 MISCDLG.CPP 消息DLG,关于DLG,以及控件子类化等源文件 MSGMNG.CPP Socket管理源文件 PLUGIN.CPP Dll plugin加载源文件 RECVDLG.CPP 接收消息处理源文件 SENDDLG.CPP 发送消息处理源文件 SETUPDLG.CPP IP Messenger属性配置源文件 SHARE.CPP 文件传输接收管理源文件 TAPP.CPP 应用程序类源文件 TDLG.CPP DLG类源文件 TLIST.CPP 链表类源文件 TREGIST.CPP