public Set<Socket> getGroupSocket() {
        Set<Socket> set = new HashSet<Socket>();
        Iterator<String> availableIterator = availableTrackerServerAddrSet.iterator();
        while (availableIterator.hasNext()) {
            String addr = availableIterator.next();
            try {
                Socket socket = createSocket(addr);
                if (socket.isConnected()) {
                    set.add(socket);
                }
            }
            catch (Exception e) {
                logger.error("address:{} create socket failed!", addr);
                logger.error(e.getMessage(), e);
                availableIterator.remove();
                unavailableTrackerServerAddrSet.add(addr);
            }
        }
        Iterator<String> unavailableIterator = unavailableTrackerServerAddrSet.iterator();
        while (unavailableIterator.hasNext()) {
            String addr = unavailableIterator.next();
            try {
                Socket socket = createSocket(addr);
                if (socket.isConnected()) {
                    unavailableIterator.remove();
                    availableTrackerServerAddrSet.add(addr);
                    set.add(socket);
                }
            }
            catch (Exception e) {
                logger.error("address:{} create socket failed!", addr);
                logger.error(e.getMessage(), e);
            }
        }
        if (availableTrackerServerAddrSet.isEmpty()) {
            logger.error("availableTrackerServerAddrSet is empty");
        }
        return set;
    }