易截截图软件、单文件、免安装、纯绿色、仅160KB

Java利用MSNP协议登录MSN

请参见上一篇文章,登录MSN协议
具体Java实现:
命令序列:<<代表发送,>>代表结果
1.连接DS(Dispatcher Server),得到NS(Notification Server)
<<VER 1 MSNP18 CVR0
>>VER 1 MSNP18
<<CVR 2 0x0804 winnt 5.1 i386 MSNMSGR 14.0.8089.0726 msmsgs yourAccount
>>CVR 2 14.0.8089 14.0.8089 14.0.8089 http://msgruser.dlservice.microsoft.com/download/0/9/7/0974F7CD-D082-46FE-922D-806670345793/zh-chs/wlsetup-cvr.exe http://download.live.com/?sku=messenger
<<USR 3 SSO I yourAccount
>>XFR 3 NS 207.46.124.86:1863 U D
private String dsHost = "64.4.9.254";//ds host
private String nsHost;//ns host
private int port = 1863;//port
private int trId = 1;//命令序列号
private String ticketToken;//在获取联系人时用
//得到向MSN服务器发送的命令
private String getMSNCommand(String cmd, String ... args) {
StringBuilder sb = new StringBuilder();
sb.append(cmd).append(' ');
sb.append(trId++).append(' ');
for (int i = 0; i < args.length; i++) {
if (i < args.length - 1) {
sb.append(args[i]).append(' ');
} else {
sb.append(args[i]);
}
}
sb.append("\r\n");
return sb.toString();
}
//初始化NS地址
private void initNSHost() throws TelnetException {
NonBlockTelnetClient client = new NonBlockTelnetClient(dsHost, port);
client.connect();
String cmd = getMSNCommand("VER", "MSNP18", "CVR0");
client.sendCommand(cmd);
String resp = client.getOutputByLine();
System.out.println("resp=" + resp);
cmd = getMSNCommand("CVR", "0x0804", "winnt", "5.1", "i386", "MSNMSGR", "14.0.8089.0726", "msmsgs", username);
client.sendCommand(cmd);
resp = client.getOutputByLine();
System.out.println("resp=" + resp);
cmd = getMSNCommand("USR", "SSO", "I", username);
client.sendCommand(cmd);
resp = client.getOutput


相关文档:

传智播客java学习 EJB3进阶


我今天学习了徐老师讲的EJB3的知识,我做了简单的笔记:
      
       SLSB无状态会话Bean的编程规则;
EJB类
编程规则
  至少有一个业务接口
  必须是具体类.不能是final或抽象的.
  必须有空构造
  可以是其它sessionbean或p ......

Java软件架构师需要的东西


作为Java程序员来说,最痛苦的事情莫过于可以选择的范围太广,可以读的书太多,往往容易无所适从。根据我的经验,按照学习的先后顺序,推荐给大家,特别是那些想不断提高自己技术水平的Java程序员们。
一、Java编程入门类
对于没有Java编程经验的程序员要入门,随便读什么入门书籍都一样,这个阶段需要你快速的掌握Java ......

JAVA代码优化

通过使用一些辅助性工具来找到程序中的瓶颈,然后就可以对瓶颈部分的代码进行优化。一般有两种方案:即优化代码或更改设计方法。我们一般会选择后者,因为不去调用以下代码要比调用一些优化的代码更能提高程序的性能。而一个设计良好的程序能够精简代码,从而提高性能。
下面将提供一些在JAVA程序的设计和编码中,为了能够 ......

Java 线程池的原理与实现

------------------------------------------------------------------------------------------------
这几天主要是狂看源程序,在弥补了一些以前知识空白的同时,也学会了不少新的知识(比如 NIO),或者称为新技术吧。
线程池就是其中之一,一提到线程,我们会想到以前《操作系统》的生产者与消费者,信号量,同步控制 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号