首先要把下载的Smack的jar包导进工程。下面说的内容,Smack的smack_3_2_0\documentation\ 文件夹下都有介绍
1. 建立一个chat,服务器为Gmail,进行通话:import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import org.jivesoftware.smack.Chat;
import org.jivesoftware.smack.MessageListener;
import org.jivesoftware.smack.XMPPConnection;
import org.jivesoftware.smack.XMPPException;
import org.jivesoftware.smack.packet.Message;
public class ChatTest
{
public static void main(String[] args)
{
String username = "xxx@gmail.com";//gmail邮箱
String password = "xxxxxx";//邮箱密码
String serviceName = "gmail.com";//gmail的服务器名称
XMPPConnection connection = new XMPPConnection(serviceName);
try
{
connection.connect();//建立连接
connection.login(username, password);//登陆
String userChatTo = "xxx@gmail.com";//要聊天的gmail邮箱
//建立一个聊天
Chat chat = connection.getChatManager().createChat(
userChatTo,
new MessageListener()
{
@Override
public void processMessage(Chat chat, Message msg)
{
System.out.println(msg.getFrom() + ": " + msg.getBody());
//接收对方的消息
}
});
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
while(true)
{
String msg = reader.readLine();
if(msg.equalsIgnoreCase("!q"))
break;
chat.sendMessage(msg);//消息的发送
}
}
catch (XMPPException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
2. 接收外来的chat消息:
ChatManager chatmanager = connection.getChatManager().addChatListener(
new ChatManagerListener()
{
@Override
public void chatCreated(Chat chat, boolean createdLocally)
{
if (!createdLocally)
chat.addMessageListener(new MyNewMessageListener());;
}
});
3. 获得好友名单:
Roster roster = connection.getRoster();
Collection<RosterEntry> entries = roster.getEntries();
for (RosterEntry entry : entries)
{
System.out.println(entry);
}
4. 好友状态监听:
Roster roster = connection.getRoster();
roster.addRosterListener(new RosterListener()
{public void entriesAdded(Collection<String> addresses) {}public void entriesDeleted(Collection<String> addresses) {}
public void entriesUpdated(Collection<String> addresses) {}
public void presenceChanged(Presence presence){
System.out.println("Presence changed: " + presence.getFrom() + " " + presence);
}
});
5. 更改自己状态:
presence = new Presence(Presence.Type.unavailable);// 改为离线
connection .sendPacket(presence);
6. 还有很多基础的documentation文件夹下都有介绍,javadoc下有各种类介绍。
浙公网安备 33010602011771号