飞鸽传书项目

本文介绍了飞鸽传书(IPMessenger)这款免费的局域网通信软件及其协议,详细讲解了飞鸽传书协议的格式和命令列表,包括收发消息、文件传输等功能。同时,给出了一个简单的Python实现,涉及网络编程、多线程和进程通信,展示了如何使用飞鸽传书协议进行通信。
摘要由CSDN通过智能技术生成


飞鸽传书
1. 介绍

    古代通讯

    飞鸽传书与鸿雁传书是一个意思,就是古人之间联系的一种方法,将信件系在鸽子的脚上然后传递给要传递的人。古代通信不方便,所以聪明的人利用鸽子会飞且飞得比较快、会辨认方向等多方面优点,驯化了鸽子,用以提高送信的速度。

    现代通讯

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

2. 飞鸽传书协议

ipmsg是用来在局域网中基于udp/tcp的应用层通信协议,功能如下:

    收发消息
    收发文件
    收发文件夹

飞秋软件,想必大家都很熟悉,它是一个使用 飞鸽传书协议 完成局域网通信的一个软件而已,只要了解了 飞鸽传书的协议是怎样规定数据,那么咱们也可以做出类似的软件
3. 协议的格式

版本号:数据包编号:发送者姓名:发送者主机名:命令字:附加选项

如下是,发送一条消息:

1:123456789:itcast-python:localhost:32:hello

说明:

    1 版本号,一般为1,较高版本的飞秋则较为复杂
    123456789 数据包编号,主要用来标记这个数据包,一般不重复,所以可以使用time来得到一个
    itcast-python 电脑的用户名
    localhost 主机名
    32 发送消息的命令
    hello 发送的消息内容

 

附件:飞鸽传书-命令列表

# header
IPMSG_VERSION = 0x0001
IPMSG_DEFAULT_PORT = 0x0979
# command
IPMSG_NOOPERATION = 0x00000000
IPMSG_BR_ENTRY = 0x00000001
IPMSG_BR_EXIT = 0x00000002
IPMSG_ANSENTRY = 0x00000003
IPMSG_BR_ABSENCE = 0x00000004
IPMSG_BR_ISGETLIST = 0x00000010
IPMSG_OKGETLIST = 0x00000011
IPMSG_GETLIST = 0x00000012
IPMSG_ANSLIST = 0x00000013
IPMSG_BR_ISGETLIST2 = 0x00000018
IPMSG_SENDMSG = 0x00000020
IPMSG_RECVMSG = 0x00000021
IPMSG_READMSG = 0x00000030
IPMSG_DELMSG = 0x00000031
IPMSG_ANSREADMSG = 0x00000032
IPMSG_GETINFO = 0x00000040
IPMSG_SENDINFO = 0x00000041
IPMSG_GETABSENCEINFO = 0x00000050
IPMSG_SENDABSENCEINFO = 0x00000051
IPMSG_GETFILEDATA = 0x00000060
IPMSG_RELEASEFILES = 0x00000061
IPMSG_GETDIRFILES = 0x00000062
IPMSG_GETPUBKEY = 0x00000072
IPMSG_ANSPUBKEY = 0x00000073
# option for all command
IPMSG_ABSENCEOPT = 0x00000100
IPMSG_SERVEROPT = 0x00000200
IPMSG_DIALUPOPT = 0x00010000
IPMSG_FILEATTACHOPT = 0x00200000
IPMSG_ENCRYPTOPT = 0x00400000
IPMSG_UTF8OPT = 0x00800000
# option for send command
IPMSG_SENDCHECKOPT = 0x00000100
IPMSG_SECRETOPT = 0x00000200
IPMSG_BROADCASTOPT = 0x00000400
IPMSG_MULTICASTOPT = 0x00000800
IPMSG_NOPOPUPOPT = 0x00001000
IPMSG_AUTORETOPT = 0x00002000
IPMSG_RETRYOPT = 0x00004000
IPMSG_PASSWORDOPT = 0x00008000
IPMSG_NOLOGOPT = 0x00020000
IPMSG_NEWMUTIOPT = 0x00040000
IPMSG_NOADDLISTOPT = 0x00080000
IPMSG_READCHECKOPT = 0x00100000
IPMSG_SECRETEXOPT = (IPMSG_READCHECKOPT|IPMSG_SECRETOPT)
# encryption flags for encrypt command
IPMSG_RSA_512 = 0x00000001
IPMSG_RSA_1024 = 0x00000002
IPMSG_RSA_2048 = 0x00000004
IPMSG_RC2_40 = 0x00001000
IPMSG_RC2_128 = 0x00004000
IPMSG_RC2_256 = 0x00008000
IPMSG_BLOWFISH_128 = 0x00020000
IPMSG_BLOWFISH_256 = 0x00040000
IPMSG_AES_128 = 0x00080000
IPMSG_SIGN_MD5 = 0x10000000
IPMSG_SIGN_SHA1 = 0x20000000
# compatibilty for Win beta version
IPMSG_RC2_40OLD = 0x00000010    # for beta1-4 only
IPMSG_RC2_128OLD = 0x00000040    # for beta1-4 only
IPMSG_BLOWFISH_128OLD = 0x00000400    # for beta1-4 only
IPMSG_RC2_40ALL = (IPMSG_RC2_40|IPMSG_RC2_40OLD)
IPMSG_RC2_128ALL = (IPMSG_RC2_128|IPMSG_RC2_128OLD)
IPMSG_BLOWFISH_128ALL = (IPMSG_BLOWFISH_128|IPMSG_BLOWFISH_128OLD)
# file types for fileattach command
IPMSG_FILE_REGULAR = 0x00000001
IPMSG_FILE_DIR = 0x00000002
IPMSG_FILE_RETPARENT = 0x00000003    # return parent directory
IPMSG_FILE_SYMLINK = 0x00000004
IPMSG_FILE_CDEV = 0x00000005    # for UNIX
IPMSG_FILE_BDEV = 0x00000006    # for UNIX
IPMSG_FILE_FIFO = 0x00000007    # for UNIX
IPMSG_FILE_RESFORK = 0x00000010    # for Mac
# file attribute options for fileattach command
IPMSG_FILE_RONLYOPT = 0x00000100
IPMSG_FILE_HIDDENOPT = 0x00001000
IPMSG_FILE_EXHIDDENOPT = 0x00002000    # for MacOS X
IPMSG_FILE_ARCHIVEOPT = 0x00004000
IPMSG_FILE_SYSTEMOPT = 0x00008000
# extend attribute types for fileattach command
IPMSG_FILE_UID = 0x00000001
IPMSG_FILE_USERNAME = 0x00000002    # uid by string
IPMSG_FILE_GID = 0x00000003
IPMSG_FILE_GROUPNAME = 0x00000004    # gid by string
IPMSG_FILE_PERM = 0x00000010    # for UNIX
IPMSG_FILE_MAJORNO = 0x00000011    # for UNIX devfile
IPMSG_FILE_MINORNO = 0x00000012    # for UNIX devfile
IPMSG_FILE_CTIME = 0x00000013    # for UNIX
IPMSG_FILE_MTIME = 0x00000014
IPMSG_FILE_

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值