<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 墻頭草 閱讀(4949) 評論(5)  編輯  收藏

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


    網站導航:
     
    人人游戲網 軟件開發網 貨運專家
    主站蜘蛛池模板: 两个人看的www高清免费视频 | 亚洲视频一区二区三区| 亚洲日韩一区二区一无码| 免费污视频在线观看| 亚洲gv猛男gv无码男同短文| 国产高潮久久免费观看| 亚洲一区二区三区偷拍女厕| aa毛片免费全部播放完整| 亚洲日本乱码在线观看| 99精品全国免费观看视频..| 亚洲国产成人久久精品影视| 亚洲短视频在线观看| 日本激情猛烈在线看免费观看| 男人的天堂亚洲一区二区三区 | 亚洲国产精品狼友中文久久久| 香蕉视频在线观看免费| 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 亚洲免费福利在线视频| 国内一级一级毛片a免费| 豆国产96在线|亚洲| 亚洲精品专区在线观看| 久久免费精品视频| 亚洲一级毛片中文字幕| 国产免费131美女视频| 一个人看的免费高清视频日本| 亚洲国产精品无码专区影院| 亚洲网站免费观看| 亚洲av日韩av永久无码电影 | 精品免费国产一区二区| 亚洲黄片手机免费观看| 久久久久亚洲av无码专区喷水| 91精品免费在线观看| 亚洲国产成人综合精品| 亚洲无码在线播放| 91在线视频免费看| 曰批免费视频播放在线看片二| 亚洲AV日韩AV天堂久久| 免费无码不卡视频在线观看| 成年免费a级毛片免费看无码| 亚洲欧洲校园自拍都市| 免费国产成人高清视频网站|