import org.jivesoftware.smack.Chat;
import org.jivesoftware.smack.MessageListener;
import org.jivesoftware.smack.XMPPConnection;
import org.jivesoftware.smack.packet.Message;
import java.io.*;
public class ChatTest {
public static void main(String[] args) throws Exception {
XMPPConnection.DEBUG_ENABLED = true;
XMPPConnection connection = new XMPPConnection("gmail.com");
connection.connect();
connection.login("MyEclipseJava", "密码******");
Chat chat = connection.getChatManager().createChat("beansoft@gmail.com", new MessageListener() {
public void processMessage(Chat chat, Message message) {
System.out.println(message.getFrom() + " " + new java.util.Date().toLocaleString() + "说:" + message.getBody());
}
});
BufferedReader cmdIn = new BufferedReader(new InputStreamReader(System.in));
for(;;) {
try {
String cmd = cmdIn.readLine();
if("!q".equalsIgnoreCase(cmd)) {
break;
}
chat.sendMessage(cmd);
}catch(Exception ex) {
}
}
connection.disconnect();
System.exit(0);
}
}
代码结构很简单,就是连接到gmail.com的聊天服务器,然后用MyEclipseJava这个账户登录,密码保密和谐成**了。createChat()方法连接您想说话的对象,然后创建消息监听器就行了。
后面的代码是循环从命令行读取信息并发给目标对象的,直到您输入!q就可以退出聊天了。这段程序的缺点大概就是不能更改聊天的目标对象吧,不过如果把它设置成报警提醒相信会非常有用,例如服务器出错等等,要是所有的IM都互联互通,这样会更有用的。
这段代码运行的时候会弹出个调试对话框来查看接受和发送的消息,您可以去掉 XMPPConnection.DEBUG_ENABLED = true; 这一句就不会再出来调试对话框了。