飞鸽传书
原名:IP Messenger
原作者:白水啓章
许可协议:BSD License
官方网站:http://www.ipmsg.org/
“飞鸽传书”是简单的即时消息/文件传输程序。P2P结构,无须服务器;适合(但不限于)局域网使用。在日本和中国很流行。
这个软件初成于上个实际90年代中期。作者受Mac上的一个叫BroadCast的软件的启发,开发了一个即时通软件,竟在公司内(然后MailingList上)一举成名。
飞鸽传书的通信协议是UDP和TCP/IP,因此得名。邻居发现和即时消息使用UDP协议,而文件传输则使用TCP。
协议很简单,基于文本的通信协议。
下面是协议简述:
---------------------------------
=== 报文格式 ===
UDP报文格式是以冒号“:”隔开的文本格式,如下:
引用
协议版本:报文编号:发送方用户名:发送方主机名:命令编号:附加字段
其中,协议版本是1;命令编号可以在IPMSG.H里面查到。
命令编号(转换成二进制)的低8位是命令名,高24位都是标志位(flags),标志位用“或”运算结合。
用户名不是“昵称“,后文细说。
下面是一个例子:
引用
1:100:shirouzu:jupiter:32:Hello
命令是32(IPMSG_SENDMSG),附加字段是Hello,是消息内容,后文细说。
=== 邻居发现 ===
一个节点加入网络时,广播IPMSG_BR_ENTRY命令,告知其他成员。
收到IPMSG_BR_ENTRY的成员,应当将发送方加入自己的通讯录,并向新加入的成员发送IPMSG_ANSENTRY消息。
新加入的节点通过返回的IPMSG_ANSENTRY消息,就能知道网络中的所有成员。但是由于IP协议有数据包的丢失,UDP不保证成功传输,因此,应该尽可能保留原有的通讯录,不要完全更新。
“离开”状态或者“昵称“的变更,都通过广播IPMSG_BR_ABSENCE消息通知所有成员。这个消息无须回应。
对于IPMSG_BR_ENTRY, IPMSG_ANSENTRY和IPMSG_BR_ABSENCE命令,如果一个成员处于“离开”状态,那么它们都要设置IPMSG_ABSENCEOPT标志位。它们的附加字段是“昵称”。另外,对于拨号用户,或者无法收到广播的用户,还要设置IPMSG_DIALUPOPT标志位。这样,邻居发现类的命令就单独对这些节点进行单播。
=== 消息传输 ===
发送消息使用IPMSG_SENDMSG命令,扩展字段是消息本体。接收方如果发现IPMSG_SENDCHECKOPT标志位被设置,还要返回IPMSG_RECVMSG命令,扩展字段是发来的消息的报文编号。
---------------------------------
实现了以上协议,就可以完成邻居发现和基本的消息传递功能。消息传递还有“广播”的方式,还有消息加密和文件传送功能,以后再讨论。
分享到:
相关推荐
在这个场景下,"Java实现I飞鸽传书"意味着我们要用Java编程语言来编写一个程序或者库,使得Java应用能够与PetaClone进行交互,实现数据的传输和同步功能。 首先,我们需要了解飞鸽传书(PetaClone)的基本原理。...
对于开发者而言,研究飞鸽传书的源代码意味着有机会学习到以下关键知识点: 1. **网络编程**:了解如何使用套接字(socket)API进行网络通信,包括TCP连接的建立与断开、数据的封装和解封装。 2. **多线程技术**:...
其次,多线程编程在飞鸽传书源码中扮演着重要角色。为了实现并行处理,源码可能会使用Thread或Task类来创建新的执行线程。例如,一个线程负责监听客户端连接,另一个线程则处理接收的数据。同时,线程同步机制如...
本项目聚焦于实现一款局域网内的即时通讯软件,类似于飞鸽传书,但在此基础上增加了对话框聊天功能,专门针对文件传输进行优化。 首先,我们要理解“局域网即时通讯软件”的核心概念。局域网(Local Area Network, ...
这意味着我们可以期待一个完整的开发流程,从需求分析、系统设计到编码实现。局域网飞鸽传书软件的核心功能是允许用户在同一网络内的设备之间快速、方便地分享文件,这对于教学、团队协作和日常办公非常实用。 ...
这意味着,开发者无需进行复杂的配置,即可在VS2010下调试、修改和扩展代码。VS2010作为微软的旗舰级开发工具,支持C++语言,并具备强大的调试、版本控制和团队协作功能,是学习和研究源码的理想平台。 在实际操作...
"窗口测试"可能意味着这个版本专注于Windows操作系统,进行了一系列的兼容性和性能测试,以确保在Windows环境下稳定运行。 在实际使用"qq界面飞鸽"时,用户可能需要了解以下几点: 1. **安装与启动**:首先,用户...
在这个"毕业设计-飞鸽传书源码及文档"中,我们可以深入理解这款应用的设计原理和技术实现。 首先,飞鸽传书的核心技术是P2P(Peer-to-Peer)网络,这是一种去中心化的网络架构。在P2P网络中,每个参与者既是客户端...
标题中的“类似飞鸽传书”指的是我们要创建一个基于C#编程语言的软件,其功能类似于知名的局域网通信工具“飞鸽传书”。飞鸽传书是一款在局域网内快速分享文件、文本信息的工具,因其简单易用、传输速度快而受到用户...
在这个项目中,我们关注的是它的Java版本,这意味着开发者使用了Java编程语言来实现这一功能。Java因其跨平台性、稳定性和丰富的库支持而被广泛用于开发各种类型的应用程序,包括网络通信。 源码分析: 1. **网络...
首先,"飞鸽"是一款流行的即时通讯软件,其源代码公开意味着开发者可以研究其内部工作机制,学习如何构建类似的应用程序。源代码是软件的基础,它是由程序员用特定编程语言编写的指令集合,控制着程序的行为。通过...
飞鸽传书 IP Messenger(简称 IPMsg)是一款专为局域网用户设计的即时通讯软件,它提供了简单快捷的通信方式,使得在同一网络环境下的用户能够轻松地进行文本聊天、文件传输以及群组交流。v3.10 稳定版的发布,意味...
《局域网飞鸽传书软件的设计与实现》 网络通信技术在当今信息化社会中扮演着至关重要的角色,然而,大多数网络通信工具依赖于互联网服务器,这对于拥有内部网络的大型组织来说,存在诸多问题。例如,过度依赖互联网...
这个场景中,我们探讨的是如何在Java环境中调用飞鸽传书(IPMsg)的功能,以便实现文件传输、消息传递等操作。首先,我们要理解飞鸽传书是一种局域网内的即时通讯软件,它提供了文件传输、群发消息等功能,常被用于...
标题中的"C#版的局域网飞鸽"是一款基于C#编程语言开发的应用程序,它主要功能是实现在局域网内的文件传输和聊天。这个项目可能是为了方便局域网内的用户快速、便捷地分享文件和进行即时通信,类似于知名的飞鸽传书...
【标题】:“JAVA局域网飞鸽传书软件设计与实现(源代码).rar”指出这是一个基于Java语言开发的局域网文件传输软件项目,它提供了源代码供学习和研究。这种类型的软件允许用户在同一个局域网内快速、便捷地分享文件,...
1. **网络编程**:飞鸽软件的核心在于局域网通信协议的实现,这涉及到TCP/IP协议栈的理解和使用,包括数据封装、传输、错误检测和纠正等。 2. **多线程编程**:为了处理并发的用户请求和保持高效率,飞鸽软件可能会...
标题 "JAVA局域网飞鸽传书软件设计与实现(源代码+论文)" 提供了本次讨论的核心内容,即一个基于JAVA开发的局域网文件传输软件,它模仿了传统"飞鸽传书"的方式,实现了文件在局域网内的快速传递。这个项目可能包含了...
这款应用旨在实现类似飞鸽传书的功能,提供便捷的文件传输服务。 【描述】"Android 仿飞鸽传输源代码。100%可运行!"意味着这个项目是用Java或Kotlin等Android编程语言编写的,包含了完整的源代码。开发者声明此...