<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

    運行環境:JDK1.4+

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

    XMPP服務器:Openfire 3.6

    特點:可直接與QQ,MSN,Gtalk等賬號綁定,可直接與QQ,Gtalk,MSN等聊天工具互通

    通過這個Java程序,讓大家首先先了解一下基于XMPP協議的即時通信的基本原理,希望大家通過界面上的報文了解通信的遠離,我先拋磚引玉一下,

    核心源碼:

    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;
        
    /**
         * 構造 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();
            }
        }

        
    /**
         * 構造 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();
            }
        }

        
    /**
         * 構造 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;
        }
        
        

        
    /**
         * 注冊新賬號
         * 
         * 
    @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;
        }

        
    /**
         * 返回相應(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 墻頭草 閱讀(4943) 評論(5)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    人人游戲網 軟件開發網 貨運專家
    主站蜘蛛池模板: 亚洲欧洲久久久精品| 午夜精品射精入后重之免费观看| 日本免费一区二区三区四区五六区 | 亚洲色最新高清av网站| 无码区日韩特区永久免费系列 | 亚洲A∨精品一区二区三区下载| 67194成是人免费无码| 亚洲午夜久久久精品电影院| xxxx日本免费| 亚洲日本乱码一区二区在线二产线| 99ee6热久久免费精品6| 亚洲国产精品美女久久久久| www国产亚洲精品久久久| 日日狠狠久久偷偷色综合免费 | 亚洲黄色免费观看| 国产成人无码免费看视频软件| 亚洲18在线天美| 免费爱爱的视频太爽了| 在线观看免费亚洲| 国产成人一区二区三区免费视频 | 香蕉免费一级视频在线观看| 亚洲精品乱码久久久久久中文字幕| 久久99免费视频| 久久精品国产亚洲αv忘忧草 | 亚洲国产日韩精品| 国产特级淫片免费看| 久久综合国产乱子伦精品免费| 国产产在线精品亚洲AAVV| 亚洲国语在线视频手机在线| 亚洲真人无码永久在线| 无码国产精品一区二区免费3p| 污污免费在线观看| 亚洲国产香蕉碰碰人人| a级毛片无码免费真人| 东方aⅴ免费观看久久av| 亚洲乱码一区av春药高潮| 亚洲av永久无码精品古装片| 国产免费av片在线看| 91麻豆国产免费观看| 久久精品国产亚洲AV电影网| 亚洲一级毛片在线播放|