⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 startnetpeergroup.java

📁 jxme的一些相关程序,主要是手机上程序开发以及手机和计算机通信的一些程序资料,程序编译需要Ant支持
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/*
 * Copyright (c) 2001 Sun Microsystems, Inc.  All rights
 * reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 *
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in
 *    the documentation and/or other materials provided with the
 *    distribution.
 *
 * 3. The end-user documentation included with the redistribution,
 *    if any, must include the following acknowledgment:
 *       "This product includes software developed by the
 *       Sun Microsystems, Inc. for Project JXTA."
 *    Alternately, this acknowledgment may appear in the software itself,
 *    if and wherever such third-party acknowledgments normally appear.
 *
 * 4. The names "Sun", "Sun Microsystems, Inc.", "JXTA" and "Project JXTA" must
 *    not be used to endorse or promote products derived from this
 *    software without prior written permission. For written
 *    permission, please contact Project JXTA at http://www.jxta.org.
 *
 * 5. Products derived from this software may not be called "JXTA",
 *    nor may "JXTA" appear in their name, without prior written
 *    permission of Sun.
 *
 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 * DISCLAIMED.  IN NO EVENT SHALL SUN MICROSYSTEMS OR
 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 * ====================================================================
 *
 * This software consists of voluntary contributions made by many
 * individuals on behalf of Project JXTA.  For more
 * information on Project JXTA, please see
 * <http://www.jxta.org/>.
 *
 * This license is based on the BSD license adopted by the Apache Foundation.
 *
 * $Id: StartNetPeerGroup.java,v 1.2 2002/03/04 21:42:59 echtcherbina Exp $
 */

package net.jxta.impl.peergroup;

import java.io.*;
import java.util.*;
import net.jxta.service.*;
import net.jxta.id.*;
import net.jxta.protocol.*;
import net.jxta.discovery.*;
import net.jxta.peergroup.*;
import net.jxta.document.*;
import net.jxta.platform.Application;
import net.jxta.exception.PeerGroupException;

/**
 * This code is responsible for configuring and starting the
 * netPeerGroup.
 * Right now it starts an harbitrary peergroup; almost identical to
 * platform. (It actually borrows its adv).
 */
public class StartNetPeerGroup implements Application {

    PeerGroup pg;
    ID assignedID;
    Advertisement impl;

    public void stopApp() {
    }

    private synchronized void delay() {
		    try {
			wait(2000);
		    } catch (Exception e){
		    }
    }

    public void init(PeerGroup pg, ID assignedID, Advertisement impl)
        throws PeerGroupException
    {
        this.pg = pg;
        this.assignedID = assignedID;
        this.impl = impl;
    }

    public int startApp(String[] arg) {
      try {
        // Attempt the recover the NetPeerGroup from a saved adv.
        PeerGroupAdvertisement npgAdv = null;

        // Look for the NetPeerGroup ADV on the net. In theory, there
        // should be some authoritative source for it. That is, whatever
        // advertisement named "NetPeerGroup" that you find, should describe
	// the same group with the same GID. In practive, for now, anyone
	// is an authoritative source, so there might be competing versions
	// seeded by different people who did not find any instance around
	// at some point in time and decided to seed it.

	BufferedReader in
	    = new BufferedReader(new InputStreamReader(System.in));

	// Offer the newbie mode; others know what to do.
	// That is, race against the boot to type "D<enter>"
	// before we run that code below...

	boolean doDisco = false;
	String answer = "";

        try {
            //changed 28.02.02 - in.ready() under jdk 1.1.8 is always true
            in.reset();
            //changed
	    if (in.ready()) {
                answer = in.readLine();

		if (answer.equals("D")) {
		    doDisco = true;
		}
	    }
	} catch (Exception e) {
	}

	// If the user typed "D", we'll do discovery anyhow.
	// otherwise, we'll try to be smart; if there ever was
	// a NetPeerGroup other than the default instanciated
	// here, we'll assume that the user uses discovery for the
	// netPeerGroup. Otherwise, we'll assume that the user
	// just always uses the hardwired default.
        boolean beSmart = false;
	Hashtable advs = new Hashtable();
	boolean first = true;

	DiscoveryService disco = null;
        disco = pg.getDiscoveryService();

	// Until we find something or the user decides to make a choice.


        try {
            //changed 28.02.02 - in.ready() is always true
            in.reset();
	    while (in.ready()) in.readLine();
	} catch (Exception e) {
	}


        int loop = 0;
	while (true) {
	    try {
		if (in.ready()) {
		    break;
		}
	    } catch (Exception e) {
		break;
	    }

	    if (first) {
		System.out.println("Looking for NetPeerGroup advertisements.");
                if (doDisco) {
                    System.out.println("Press <enter> to stop looking and "
                                       + "choose.");
                }
            }

	    Enumeration ae = null;
	    try {
		if (first) {
		    ae = disco.getLocalAdvertisements(DiscoveryService.GROUP
						      , "Name"
						      , "NetPeerGroup");
		} else {
                    if (loop++ % 5 == 0)
                        disco.getRemoteAdvertisements(null
                                                      , DiscoveryService.GROUP
                                                      , "Name"
                                                      , "NetPeerGroup",10);
                    delay();
		    ae = disco.getLocalAdvertisements(DiscoveryService.GROUP
						      , "Name"
						      , "NetPeerGroup");
		}
	    } catch (IOException e){
		// found nothing!  move on
	    }


            first = false;
	    while (ae != null && ae.hasMoreElements()) {
		PeerGroupAdvertisement a =
		    (PeerGroupAdvertisement) ae.nextElement();

		if (a.getName().equals("NetPeerGroup")) {
                    String kw = a.getDescription();
                    if (kw == null) kw = "";
                    if (! advs.containsKey(kw+a.getPeerGroupID().toString())) {
                        String self = " ";
                        // Do a quick lookup for a past local instantiation.
                        // May not find anything if we do not publish padvs
                        // in the parent grp.
                        Enumeration paEnum = (new Vector()).elements();
                        try {
                            paEnum = disco.getLocalAdvertisements(DiscoveryService.PEER,
                                                                  "PID",
                                                                  pg.getPeerID().toString());
                        } catch (Exception justGiveUp) {
                        }
                        while (paEnum.hasMoreElements()) {
                            PeerAdvertisement pa =

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -