亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? connectaction.java.svn-base

?? 類似QQ的功能
?? SVN-BASE
?? 第 1 頁 / 共 2 頁
字號:
/******************************************************************************* Jimm - Mobile Messaging - J2ME ICQ clone Copyright (C) 2003-05  Jimm Project This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA. ******************************************************************************** File: src/jimm/comm/ConnectAction.java Version: ###VERSION###  Date: ###DATE### Author(s): Manuel Linsmayer, Andreas Rossbacher *******************************************************************************/package jimm.comm;import java.util.*;import java.io.*;import jimm.ContactItem;import jimm.ContactListGroupItem;import jimm.ContactListItem;import jimm.ContactList;import jimm.JimmException;import jimm.Options;import jimm.MainThread;import jimm.util.ResourceBundle;import jimm.comm.connections.HTTPConnection;public class ConnectAction extends Action{    // Action states    public static final int STATE_ERROR = -1;    public static final int STATE_INIT_DONE = 0;	public static final int STATE_AUTHKEY_REQUESTED = 1;    public static final int STATE_CLI_IDENT_SENT = 2;    public static final int STATE_CLI_DISCONNECT_SENT = 3;    public static final int STATE_CLI_COOKIE_SENT = 4;    public static final int STATE_CLI_WANT_CAPS_SENT = 5;    public static final int STATE_CLI_CHECKROSTER_SENT = 6;    public static final int STATE_CLI_STATUS_INFO_SENT = 7;    public static final int STATE_CONNECTED = 8;        public static final int STATE_MAX = 8;    // CLI_SETICBM packet data    public static final byte[] CLI_SETICBM_DATA = Util.explodeToBytes("0,0,0,0,0,0B,1F,40,3,E7,3,E7,0,0,0,0", ',', 16);    // CLI_READY packet data    public static final byte[] CLI_READY_DATA =    	Util.explodeToBytes    	(    		"00,22,00,01,01,10,16,4f,"+    		"00,01,00,04,01,10,16,4f,"+ 		"00,13,00,04,01,10,16,4f,"+		"00,02,00,01,01,10,16,4f,"+		"00,03,00,01,01,10,16,4f,"+		"00,15,00,01,01,10,16,4f,"+		"00,04,00,01,01,10,16,4f,"+		"00,06,00,01,01,10,16,4f,"+		"00,09,00,01,01,10,16,4f,"+		"00,0a,00,01,01,10,16,4f,"+		"00,0b,00,01,01,10,16,4f",		',', 16    	);        public static final short[] FAMILIES_AND_VER_LIST =    {    	0x0022, 0x0001,    	0x0001, 0x0004,    	0x0013, 0x0004,    	0x0002, 0x0001,    	0x0003, 0x0001,    	0x0015, 0x0001,    	0x0004, 0x0001,    	0x0006, 0x0001,    	0x0009, 0x0001,    	0x000a, 0x0001,    	0x000b, 0x0001,    };        // Timeout    // #sijapp cond.if modules_PROXY is "true" #    public static final int TIME_OUT = 30 * 1000;    // #sijapp cond.end #    public int TIMEOUT = 30 * 1000; // milliseconds    /** *********************************************************************** */    // UIN    private String uin;    // Password    private String password;    // Server host    private String srvHost;    // Server port    private String srvPort;    // Action state    private int state;    // Last activity    private long lastActivity;    private boolean active;    private boolean canceled_by_timeout;    // Temporary variables	private String server;    private byte[] cookie;    private boolean srvReplyRosterRcvd;    // Constructor    public ConnectAction(String uin, String password, String srvHost, String srvPort)    {    	super(true, false);    	System.out.println("conn. act. srvHost="+srvHost);    	lastActivity = System.currentTimeMillis();        this.uin = uin;        this.password = password;        this.srvHost = srvHost;        this.srvPort = srvPort;                System.out.println("ConnectAction, this="+this);    }    // Returns the UID    public String getUin()    {        return this.uin;    }    // Returns the password    public String getPassword()    {        return this.password;    }    // Returns the server host    public String getSrvHost()    {        return this.srvHost;    }    // Returns the server port    public String getSrvPort()    {        return this.srvPort;    }    // Init action    protected void init() throws JimmException    {        // #sijapp cond.if modules_PROXY is "true" #        int retry = 1;        try        {            retry = Integer.parseInt(Options.getString(Options.OPTION_AUTORETRY_COUNT));            retry = (retry > 0) ? retry : 1;        } catch (NumberFormatException e)        {            retry = 1;        }        this.TIMEOUT = ConnectAction.TIME_OUT * retry;        // #sijapp cond.end#         // Check parameters        if ((this.uin.length() == 0) || (this.password.length() == 0))        {            this.state = ConnectAction.STATE_ERROR;            throw (new JimmException(117, 0));        }        // Open connection        // #sijapp cond.if modules_PROXY is "true" #        for (int i = 0; i < retry; i++)        {            // #sijapp cond.end#            try            {            	Icq.connect(this.srvHost + ":" + this.srvPort);                // #sijapp cond.if modules_PROXY is "true" #                break;                // #sijapp cond.end #            } catch (JimmException e)            {                // #sijapp cond.if modules_PROXY is "true" #                if (i >= (retry - 1) || ((this.lastActivity + this.TIMEOUT) < System.currentTimeMillis()))                {                    // #sijapp cond.end #                    this.state = ConnectAction.STATE_ERROR;                    throw (e);                }                // #sijapp cond.if modules_PROXY is "true" #                else                    if ((this.lastActivity + this.TIMEOUT) > System.currentTimeMillis())                    {                    	Icq.c.notifyToDisconnect();                        try                        {                            // Wait the given time                            Thread.sleep(2000);                        } catch (InterruptedException er)                        {                            // Do nothing                        }                    }            }        }        // #sijapp cond.end #        // Set STATE_INIT        this.state = ConnectAction.STATE_INIT_DONE;        // Update activity timestamp        this.lastActivity = System.currentTimeMillis();    }    private int getConnectionErrorCode (int errCode) {	switch (errCode) {		// Multiple logins		case 0x0001:			return 110;		// Bad password		case 0x0004: case 0x0005:			return 111;		// Non-existant UIN		case 0x0007: case 0x0008:			return 112;		// Too many clients from same IP		case 0x0015: case 0x0016:			return 113;		// Rate exceeded		case 0x0018: case 0x001d:			return 114;	}	return 100;    }    // Forwards received packet, returns true if packet has been consumed    protected boolean forward(Packet packet) throws JimmException    {        // #sijapp cond.if modules_PROXY is "true" #        int retry = 1;        try        {            retry = Integer.parseInt(Options.getString(Options.OPTION_AUTORETRY_COUNT));            retry = (retry > 0) ? retry : 1;        } catch (NumberFormatException e)        {            retry = 1;        }        // #sijapp cond.end #        // Set activity flag        this.active = true;        // Catch JimmExceptions        try        {            // Flag indicates whether packet has been consumed or not            boolean consumed = false;            // Watch out for STATE_INIT_DONE            if (this.state == ConnectAction.STATE_INIT_DONE)            {                // Watch out for SRV_CLI_HELLO packet                if (packet instanceof ConnectPacket)                {                    ConnectPacket connectPacket = (ConnectPacket) packet;                    if (connectPacket.getType() == ConnectPacket.SRV_CLI_HELLO)                    {						if (Options.getBoolean(Options.OPTION_MD5_LOGIN)) {							Icq.c.sendPacket(new ConnectPacket());							byte[] buf = new byte[4 + this.uin.length()];							Util.putWord(buf, 0, 0x0001);							Util.putWord(buf, 2, this.uin.length());							byte[] uinRaw = Util.stringToByteArray(this.uin);							System.arraycopy(uinRaw, 0, buf, 4, uinRaw.length);							Icq.c.sendPacket(new SnacPacket(0x0017, 0x0006, 0, new byte[0], buf));						} else {							// Send a CLI_IDENT packet as reply							ConnectPacket reply = new ConnectPacket(this.uin, this.password);							Icq.c.sendPacket(reply);						}                        // Move to next state                        this.state = !Options.getBoolean(Options.OPTION_MD5_LOGIN) ? ConnectAction.STATE_CLI_IDENT_SENT :							STATE_AUTHKEY_REQUESTED;                        // Packet has been consumed                        consumed = true;                    }                }            }	    else if (state == STATE_AUTHKEY_REQUESTED) {		    if (packet instanceof SnacPacket) {			    SnacPacket snacPacket = (SnacPacket)packet;			    if ((snacPacket.getFamily() == 0x0017) && (snacPacket.getCommand() == 0x0007)) {				    byte[] rbuf = snacPacket.getData();				    int len = Util.getWord(rbuf, 0);				    byte[] authkey = new byte[len];				    System.arraycopy(rbuf, 2, authkey, 0, len);				    rbuf = null;				    byte[] buf = new byte[2 + 2 + this.uin.length() + 2 + 2 + 16];				    int marker = 0;				    Util.putWord(buf, marker, 0x0001);				    marker += 2;				    Util.putWord(buf, marker, this.uin.length());				    marker += 2;				    byte[] uinRaw = Util.stringToByteArray(this.uin);				    System.arraycopy(uinRaw, 0, buf, marker, uinRaw.length);				    marker += uinRaw.length;				    Util.putWord(buf, marker, 0x0025);				    marker += 2;				    Util.putWord(buf, marker, 0x0010);				    marker += 2;				    byte[] md5buf = new byte[authkey.length + this.password.length() + Util.AIM_MD5_STRING.length];				    int md5marker = 0;				    System.arraycopy(authkey, 0, md5buf, md5marker, authkey.length);				    md5marker += authkey.length;				    byte[] passwordRaw = Util.stringToByteArray(this.password);				    System.arraycopy(passwordRaw, 0, md5buf, md5marker, passwordRaw.length);				    md5marker += passwordRaw.length;				    System.arraycopy(Util.AIM_MD5_STRING, 0, md5buf, md5marker, Util.AIM_MD5_STRING.length);				    byte[] hash = Util.calculateMD5(md5buf);				    System.arraycopy(hash, 0, buf, marker, 16);				    Icq.c.sendPacket(new SnacPacket(0x0017, 0x0002, 0, new byte[0], buf));				    state = STATE_CLI_IDENT_SENT;			    } else {				    int errcode = -1;				    if ((snacPacket.getFamily() == 0x0017) && (snacPacket.getCommand() == 0x0003)) {					    byte[] buf = snacPacket.getData();					    int marker = 0;					    while (marker < buf.length) {						    byte[] tlvData = Util.getTlv(buf, marker);						    int tlvType = Util.getWord(buf, marker);						    marker += 4 + tlvData.length;						    if (tlvType == 0x0008) {							    errcode = Util.getWord(tlvData, 0);						    }					    }				    }				    if (errcode != -1) {					    consumed = true;					    Icq.c.notifyToDisconnect();					    this.state = ConnectAction.STATE_ERROR;					    int toThrow = getConnectionErrorCode (errcode);					    throw new JimmException(toThrow, errcode);				    }			    }		    }		    consumed = true;	    }            // Watch out for STATE_CLI_IDENT_SENT            else if (this.state == ConnectAction.STATE_CLI_IDENT_SENT)			{				int errcode = -1;				if (Options.getBoolean(Options.OPTION_MD5_LOGIN)) {					if (packet instanceof SnacPacket) {						SnacPacket snacPacket = (SnacPacket)packet;						if ((snacPacket.getFamily() == 0x0017) && (snacPacket.getCommand() == 0x0003)) {							byte[] buf = snacPacket.getData();							int marker = 0;							while (marker < buf.length) {								byte[] tlvData = Util.getTlv(buf, marker);								int tlvType = Util.getWord(buf, marker);								marker += 4 + tlvData.length;								switch (tlvType) {									case 0x0008:										errcode = Util.getWord(tlvData, 0);										break;									case 0x0005:										this.server = Util.byteArrayToString(tlvData);										break;									case 0x0006:										this.cookie = tlvData;										break;								}							}						}					} else if (packet instanceof DisconnectPacket) {						consumed = true;					}				} else {					// watch out for channel 4 packet					if (packet instanceof DisconnectPacket) {						DisconnectPacket disconnectPacket = (DisconnectPacket) packet;						// Watch out for SRV_COOKIE packet						if (disconnectPacket.getType() == DisconnectPacket.TYPE_SRV_COOKIE) {							// Save cookie							this.cookie = disconnectPacket.getCookie();							this.server = disconnectPacket.getServer();						}						// Watch out for SRV_GOODBYE packet						else if (disconnectPacket.getType() == DisconnectPacket.TYPE_SRV_GOODBYE)							errcode = disconnectPacket.getError();						consumed = true;					}				}				if (errcode != -1) {				    consumed = true;				    Icq.c.notifyToDisconnect();				    this.state = ConnectAction.STATE_ERROR;				    int toThrow = getConnectionErrorCode (errcode);				    throw new JimmException(toThrow, errcode);				}				if (consumed & (this.server != null) & (this.cookie != null)) {					// Close connection (only if not HTTP Connection)					if (!(Icq.c instanceof HTTPConnection))					{						Icq.c.forceDisconnect();						Thread.yield();						try { Thread.sleep(1000); } catch (Exception e ) {}					}					// #sijapp cond.if target is "DEFAULT" | target is "MIDP2"#					if (Options.getBoolean(Options.OPTION_SHADOW_CON)) try					{						// Wait the given time before starting the						// new connection						Thread.sleep(2000);					} catch (InterruptedException e) {}					// #sijapp cond.end#					// Open connection					// #sijapp cond.if modules_PROXY is "true" #					for (int i = 0; i < retry; i++)					{						try						{							// #sijapp cond.end #							Icq.c.connect(server);							// #sijapp cond.if modules_PROXY is "true" #							break;						} catch (JimmException e)						{							if (i >= (retry - 1) || ((this.lastActivity + this.TIMEOUT) < System.currentTimeMillis()))							{								this.active = false;								this.state = ConnectAction.STATE_ERROR;								throw (e);							}							else if ((this.lastActivity + this.TIMEOUT) > System.currentTimeMillis())							{								Icq.c.notifyToDisconnect();								try								{									// Wait the given time									Thread.sleep(2000);								} catch (InterruptedException er)								{									// Do nothing								}							}						}					}					// #sijapp cond.end #					// Move to next state

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧美电影一区二区| 美洲天堂一区二卡三卡四卡视频| 一区二区不卡在线视频 午夜欧美不卡在 | 国产aⅴ精品一区二区三区色成熟| 色噜噜狠狠色综合欧洲selulu| 日韩欧美成人一区| 午夜视频一区二区| 成人app网站| 久久久精品天堂| 麻豆精品视频在线观看视频| 91福利视频久久久久| 国产日韩精品一区二区三区| 蜜芽一区二区三区| 欧美精品久久一区| 一区二区三区资源| a级精品国产片在线观看| 久久免费电影网| 久久99热狠狠色一区二区| 欧美日韩精品系列| 亚洲高清免费在线| 欧美视频精品在线观看| 一区二区成人在线视频| 欧美性生交片4| 亚洲午夜精品17c| 在线观看欧美黄色| 一区二区三区欧美在线观看| 91麻豆国产福利在线观看| 中文字幕精品一区| 岛国一区二区三区| 国产午夜亚洲精品羞羞网站| 国产最新精品免费| 久久久久久久久久久99999| 精品亚洲porn| 亚洲国产精品高清| 成人一区二区三区在线观看 | 国产精品538一区二区在线| 精品久久久久久久久久久久包黑料| 三级亚洲高清视频| 精品国产一区二区在线观看| 国产在线精品一区二区| 久久久久九九视频| 成人h动漫精品| 中文字幕一区二区在线观看| 99在线热播精品免费| 亚洲免费高清视频在线| 欧美亚洲综合一区| 日韩影院精彩在线| 久久亚洲精华国产精华液| 国产福利91精品一区二区三区| 国产欧美va欧美不卡在线 | 韩国中文字幕2020精品| 久久综合久色欧美综合狠狠| 国产成人精品影视| 亚洲欧美日本在线| 制服丝袜成人动漫| 国产精品一区专区| 亚洲精品自拍动漫在线| 777奇米四色成人影色区| 狠狠久久亚洲欧美| 亚洲视频网在线直播| 欧美日韩高清一区二区三区| 激情五月婷婷综合网| 国产精品视频九色porn| 欧美日韩另类一区| 国产永久精品大片wwwapp| 亚洲美女视频一区| 日韩精品一区二区三区老鸭窝| heyzo一本久久综合| 日韩av中文字幕一区二区| 中文字幕乱码日本亚洲一区二区| 欧美性一区二区| 国产麻豆一精品一av一免费| 亚洲精品免费在线| 亚洲精品在线观看视频| 91欧美激情一区二区三区成人| 奇米影视一区二区三区| 亚洲欧美在线另类| 日韩精品一区二区三区视频播放 | 99久久婷婷国产综合精品| 性感美女极品91精品| 国产精品伦理在线| 日韩一区二区三区av| 色狠狠av一区二区三区| 国产精品一二三区在线| 日本不卡视频一二三区| 亚洲激情五月婷婷| 国产视频在线观看一区二区三区| 777精品伊人久久久久大香线蕉| 99久久精品情趣| 国产精品正在播放| 久久电影国产免费久久电影 | 欧美一区二区三级| 色诱视频网站一区| av成人免费在线| 国产成人午夜精品5599| 日韩vs国产vs欧美| 亚洲成av人片一区二区| 有坂深雪av一区二区精品| 中文字幕欧美日韩一区| 久久久久久99久久久精品网站| 这里只有精品99re| 欧美日韩大陆一区二区| 精品视频在线免费| 欧美亚洲国产一区二区三区va| 成人av电影免费在线播放| 国产成人在线色| 国产精品一区二区91| 国产美女精品一区二区三区| 看国产成人h片视频| 美国三级日本三级久久99| 日韩国产欧美视频| 日韩在线a电影| 久久国产精品第一页| 韩国女主播一区二区三区| 国产精品夜夜爽| 北条麻妃一区二区三区| 色婷婷综合中文久久一本| 色激情天天射综合网| 欧美午夜理伦三级在线观看| 欧美日韩在线直播| 欧美男女性生活在线直播观看| 欧美少妇性性性| 欧美日本在线播放| 日韩欧美中文字幕制服| 欧美videossexotv100| 久久久久久一级片| 亚洲私人黄色宅男| 亚洲欧美乱综合| 五月婷婷综合网| 精品一区二区三区免费播放| 国产不卡高清在线观看视频| 成人av影视在线观看| 91成人在线免费观看| 欧美一区二区美女| 日本一区二区综合亚洲| 一区二区三区在线视频免费观看| 日欧美一区二区| 国产一区二区伦理| 色婷婷激情久久| 日韩免费一区二区三区在线播放| 精品国产麻豆免费人成网站| 亚洲欧洲日韩女同| 国产福利电影一区二区三区| 91色.com| 久久综合99re88久久爱| 成人免费视频在线观看| 日韩国产欧美在线播放| 国产v日产∨综合v精品视频| 欧美日韩在线直播| 国产午夜精品久久久久久久| 一区二区三区 在线观看视频| 免费成人结看片| 94色蜜桃网一区二区三区| 91精品久久久久久久99蜜桃| 中文字幕日韩av资源站| 全部av―极品视觉盛宴亚洲| 95精品视频在线| 精品成人一区二区| 一区二区三区美女| 国产福利精品一区| 91精品国产欧美一区二区18| 亚洲欧洲精品天堂一级| 久久99精品一区二区三区 | 国产精品99久久不卡二区| 欧美午夜理伦三级在线观看| 国产目拍亚洲精品99久久精品| 日韩二区在线观看| 91猫先生在线| 国产三级欧美三级日产三级99| 香港成人在线视频| caoporn国产一区二区| 久久伊人蜜桃av一区二区| 日韩福利电影在线观看| 日本韩国欧美在线| 国产日本欧洲亚洲| 久久国产婷婷国产香蕉| 欧美视频在线播放| 亚洲日本成人在线观看| 国产91在线|亚洲| 久久日一线二线三线suv| 亚洲午夜精品网| 色狠狠一区二区| 亚洲欧美视频在线观看视频| 成人丝袜高跟foot| 久久久不卡网国产精品一区| 久久激情五月激情| 5566中文字幕一区二区电影| 性做久久久久久| 欧美欧美午夜aⅴ在线观看| 一卡二卡三卡日韩欧美| 色激情天天射综合网| 日韩美女久久久| 色婷婷久久综合| 亚洲综合成人在线视频| 欧美在线你懂的| 香蕉影视欧美成人| 在线播放中文字幕一区| 视频精品一区二区| 日韩一区二区三区视频| 激情综合网天天干|