<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 241,  comments - 116,  trackbacks - 0

    運(yùn)行環(huán)境:JDK1.4+

    第三方包:Smack(Openfire服務(wù)器官方提供)

    XMPP服務(wù)器:Openfire 3.6

    特點(diǎn):可直接與QQ,MSN,Gtalk等賬號(hào)綁定,可直接與QQ,Gtalk,MSN等聊天工具互通

    通過這個(gè)Java程序,讓大家首先先了解一下基于XMPP協(xié)議的即時(shí)通信的基本原理,希望大家通過界面上的報(bào)文了解通信的遠(yuǎn)離,我先拋磚引玉一下,

    核心源碼:

    package com.nbhj.im;

    import java.util.ArrayList;
    import java.util.Collection;
    import java.util.Iterator;
    import java.util.List;

    import org.jivesoftware.smack.ConnectionConfiguration;
    import org.jivesoftware.smack.Roster;
    import org.jivesoftware.smack.RosterEntry;
    import org.jivesoftware.smack.RosterGroup;
    import org.jivesoftware.smack.XMPPConnection;
    import org.jivesoftware.smack.XMPPException;



    public class IMServer {

        
    private ConnectionConfiguration connectionConfig;
        
    private XMPPConnection connection;
        
    private Roster roster;
        
    private boolean loginState;
        
    private Listener listener;
        
    /**
         * 構(gòu)造 IMServer(serviceName)
         
    */
        
    public IMServer(String serviceName) {
            connectionConfig 
    = new ConnectionConfiguration(serviceName);
            connection 
    = new XMPPConnection(connectionConfig);
            listener
    =new Listener();
            
    try {
                connection.connect();
            } 
    catch (XMPPException e) {
                e.printStackTrace();
            }
        }

        
    /**
         * 構(gòu)造 IMServer(host,port)
         
    */
        
    public IMServer(String host, String port) {

            connectionConfig 
    = new ConnectionConfiguration(host, Integer
                    .parseInt(port));
            connection 
    = new XMPPConnection(connectionConfig);
            listener
    =new Listener();
            
    try {
                connection.connect();
            } 
    catch (XMPPException e) {
                e.printStackTrace();
            }
        }

        
    /**
         * 構(gòu)造 IMServer(host port serviceName)
         
    */
        
    public IMServer(String host, int port, String serviceName) {
            connectionConfig 
    = new ConnectionConfiguration(host, port, serviceName);
            connection 
    = new XMPPConnection(connectionConfig);
            listener
    =new Listener();
            
            
    try {
                connection.connect();
                
            } 
    catch (XMPPException e) {
                e.printStackTrace();
            }
        }

        
    /**
         * 賬戶登陸 Server
         * 
         * 
    @return boolean
         
    */
        
    public boolean loginServer(String userName, String userPswd) {
            
    try {
                connection.login(userName, userPswd);
                loginState 
    = true;
                roster 
    = connection.getRoster();
                
                listener.regConnectionListener(connection);
                listener.regPackListener(connection);
                listener.onlineServer(connection);
                listener.regRosterListener(roster);
            } 
    catch (XMPPException e) {
                e.printStackTrace();
            }
            
    return loginState;
        }
        
        

        
    /**
         * 注冊(cè)新賬號(hào)
         * 
         * 
    @return boolean
         
    */
        
    public boolean createAccount(String regUserName, String regUserPswd) {
            
    try {
                connection.getAccountManager().createAccount(regUserName,
                        regUserPswd);
                
    return true;
            } 
    catch (XMPPException e) {
                e.printStackTrace();
                
    return false;
            }

        }

        
    /**
         * 賬戶退出 Server
         * 
         * 
    @return boolean
         
    */
        
    public boolean logoutServer() {
            
    if (loginState) {
                connection.disconnect();
                listener.stopOnlineThread();
                loginState 
    = false;
            }
            
    return !loginState;
        }

        
    /**
         * 返回所有用戶信息 <RosterEntry>
         * 
         * 
    @return List(RosterEntry)
         
    */
        
    public List<RosterEntry> getOnlineEntries() {
            List
    <RosterEntry> EntriesList = new ArrayList<RosterEntry>();
            Collection
    <RosterEntry> rosterEntry = roster.getEntries();
            Iterator
    <RosterEntry> i = rosterEntry.iterator();
            
    while (i.hasNext()){
            
                EntriesList.add(i.next());
            }
            
    return EntriesList;
        }
        
    /**
         * 返回所有用戶信息 <RosterEntry>
         * 
         * 
    @return List(RosterEntry)
         
    */
        
    public List<RosterEntry> getAllEntries() {
            List
    <RosterEntry> EntriesList = new ArrayList<RosterEntry>();
            Collection
    <RosterEntry> rosterEntry = roster.getEntries();
            Iterator
    <RosterEntry> i = rosterEntry.iterator();
            
    while (i.hasNext())
                EntriesList.add(i.next());
            
    return EntriesList;
        }

        
    /**
         * 返回相應(yīng)(groupName)組里的所有用戶<RosterEntry>
         * 
         * 
    @return List(RosterEntry)
         
    */
        
    public List<RosterEntry> getEntriesByGroup(String groupName) {
            List
    <RosterEntry> EntriesList = new ArrayList<RosterEntry>();
            RosterGroup rosterGroup 
    = roster.getGroup(groupName);
            Collection
    <RosterEntry> rosterEntry = rosterGroup.getEntries();
            Iterator
    <RosterEntry> i = rosterEntry.iterator();
            
    while (i.hasNext())
                EntriesList.add(i.next());
            
    return EntriesList;
        }

        
    /**
         * 返回所有組信息 <RosterGroup>
         * 
         * 
    @return List(RosterGroup)
         
    */
        
    public List<RosterGroup> getGroups() {
            List
    <RosterGroup> groupsList = new ArrayList<RosterGroup>();
            Collection
    <RosterGroup> rosterGroup = roster.getGroups();
            Iterator
    <RosterGroup> i = rosterGroup.iterator();
            
    while (i.hasNext())
                groupsList.add(i.next());
            
    return groupsList;
        }

        
    /**
         * 
    @return connection
         
    */
        
    public XMPPConnection getConnection() {
            
    return connection;
        }

        
    /**
         * 
    @return loginState
         
    */
        
    public boolean getLoginState() {
            
    return loginState;
        }

        
    /**
         * 
    @return roster
         
    */
        
    public Roster getRoster() {
            
    return roster;
        }
    }


    posted on 2008-12-09 13:28 墻頭草 閱讀(4949) 評(píng)論(5)  編輯  收藏

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    人人游戲網(wǎng) 軟件開發(fā)網(wǎng) 貨運(yùn)專家
    主站蜘蛛池模板: 精品亚洲A∨无码一区二区三区| 国产a不卡片精品免费观看 | 亚洲一区二区三区免费观看| 亚洲av永久无码精品表情包| 亚洲精品国产福利在线观看| 亚洲色大成网站www| 无套内射无矿码免费看黄| 国产在线国偷精品免费看| 国产午夜亚洲精品不卡免下载| a级特黄毛片免费观看| 亚洲夜夜欢A∨一区二区三区| 亚洲黄色在线观看视频| 日韩免费在线中文字幕| 999久久久免费精品国产 | 99精品全国免费观看视频| 四虎精品亚洲一区二区三区| 亚洲国产精品无码久久一区二区 | 污网站在线观看免费| 亚洲日韩人妻第一页| 亚洲国产成人在线视频| 日韩免费高清播放器| 日本免费一区二区三区最新| 亚洲人成依人成综合网| 免费人成网上在线观看| 亚洲精品午夜无码专区| 免费无码AV一区二区| 亚洲∧v久久久无码精品| xxxxx做受大片视频免费| 国产免费卡一卡三卡乱码| 精品国产污污免费网站入口 | 亚洲国产日韩在线观频| 中国china体内裑精亚洲日本| 99re6免费视频| 好看的电影网站亚洲一区| 日本一卡精品视频免费| 亚洲av无码专区在线电影| 免费无码肉片在线观看| 色爽黄1000部免费软件下载| 亚洲一区二区中文| 四虎1515hm免费国产| 亚洲一区免费观看|