我先扔点砖先,呵呵。
MSN Messenger协议建立在TCP/IP之上。除了文件传输和语音聊天是直接的"点对点"通信之外,其它所有的情形全部通过服务器进行。
MSN Messenger命令使用纯ASCII码。对非ASCII码字符使用URL编码。命令的语法是
XXX[<SP>TrID<SP>PARAM1<SP>PARAM2…]<CRLF>
其中,<SP>是空白字符,<CRLF>是回车换行,XXX是一个3字符的命令串,TrID是一个流水号,PARAMx是参数,[ ]内是可选项。最简单的命令没有流水号和参数。为了方便起见,下面讨论时用" "代表<SP>,"/r/n"代表<CRLF>,"/x??"代表一个值为0x??字节。红色表示由客户端发出,蓝色表示由服务器发出。一个MSN Messenger命令的例子如下:
USR 18 TWN I example@hotmail.com/r/n
目前的模拟MSN通讯也是根据上面的协议开发的,只不过实现工具不同罢了。有DELPHI的,有JAVA的。但实现插件的就少了。而MSN SHELL就是其中的优秀作品,核心用C开发,UI用DELPHI,你只看安装目录下的BIN目录就知道了,呵呵。(待续)