private Socket getConnectSocket(SocketAddress addr) {
		if (null == addr)
			return null;
		Socket sock = null;
		int retryTimes = 0;
		while (retryTimes < 6) {
			try {
				proxy = Utility.getProxy();
				if (null != proxy) {
					String[] ss = proxy.split( ":" );
					if (ss.length > 1) {
						Proxy p = new Proxy( Proxy.Type.SOCKS, new InetSocketAddress( ss[0], Integer.parseInt( ss[1] ) ) );
						sock = new Socket( p );
						sock.setSoTimeout( DEFAULT_TIMEOUT );
					}
				}
				else {
					sock = new Socket();
				}
				sock.connect( addr, 1000 );
			}
			catch (Exception e) {
				// Nothing to do.
			}
			finally {
				if (sock.isConnected())
					return sock;
				retryTimes++;
			}
		}
		return null;
	}