先到 http://sourceforge.net/projects/jmsn/ 下载 lib 包msnm.jar
再到 sun 官方网站下载 jsse.jar 包
最后...
package
stock;
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
import
java.io.BufferedInputStream;
import
java.io.DataInputStream;
import
java.io.IOException;
import
java.io.InputStream;
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
import
rath.msnm.MSNMessenger;
import
rath.msnm.SwitchboardSession;
import
rath.msnm.UserStatus;
import
rath.msnm.event.MsnAdapter;
import
rath.msnm.entity.
*
;
import
rath.msnm.msg.
*
;
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/a41954a27d6ad96fa2c2cf816e677448.gif)
public
class
StockMsn
...
{
public static String friend = "hunter_k_gd@hotmail.com";
public static String me = "hunter-hw@hotmail.com";
public static String password = "z123";
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
public static void main(String[] args) throws IOException,
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
InterruptedException ...{
MSNMessenger msn = new MSNMessenger(me, password);
msn.setInitialStatus(UserStatus.ONLINE);
// 监听
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
msn.addMsnListener(new MsnAdapter() ...{
public void progressTyping(SwitchboardSession ss, MsnFriend friend,
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
String typingUser) ...{
System.out.println("Typing on " + friend.getLoginName());
}
public void instantMessageReceived(SwitchboardSession ss,
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
MsnFriend friend, MimeMessage mime) ...{
System.out.println("*** MimeMessage from "
+ friend.getLoginName());
System.out.println(mime.getMessage());
System.out.println("*****************************");
}
});
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
// 登陆
System.out.println(" msn login....");
msn.login();
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
// 呼叫
msn.doCall(friend);
Thread.sleep(5000);// 延迟,SwitchboardSession创建容易失败
SwitchboardSession ss = null;
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
while (ss == null) ...{
System.out.println(" Tring call " + friend);
ss = msn.doCallWait(friend);
Thread.sleep(1000);// 循环,直到创建SwitchboardSession成功
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
System.out.println(" SwitchboardSession =" + ss + ",创建成功!可以聊天了...");
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
// 保持聊天
boolean exit = false;
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
while (!exit) ...{
DataInputStream stdio = new DataInputStream(
new BufferedInputStream(System.in));
String line = "请输入信息: ";
System.out.println(line);
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
while ((line = stdio.readLine()).length() != 0) ...{
// 这里转换字符集
byte[] tmpbyte = line.getBytes("ISO8859_1");
line = new String(tmpbyte);
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
System.out.println("Sending to" + friend + " : " + line);
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
MimeMessage msg = new MimeMessage();
msg.setKind(MimeMessage.KIND_MESSAGE);
msg.setMessage(line);
![](https://i-blog.csdnimg.cn/blog_migrate/37c8bf68cdc3cc81759c34160776bc53.gif)
while (ss == null) ...{
System.out.println(" Retring call " + friend);
ss = msn.doCallWait(friend);
Thread.sleep(1000);// 循环,直到创建SwitchboardSession成功
}
ss.sendInstantMessage(msg);
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
}
}
![](https://i-blog.csdnimg.cn/blog_migrate/6a9c071a08f1dae2d3e1c512000eef41.gif)
}
}