Cómo utilizar la tecnología JXTA para construir una red P2P
Autor Zhu Chuanhui
Después de casi un mes de investigación sobre la tecnología JXTA, finalmente entendí el proceso de implementación del lenguaje JAVA de la tecnología JXTA de la red PP, y ahora lo he compilado para que todos puedan verlo. intercambiar y discutir. De hecho, el concepto y la introducción de esta tecnología se pueden encontrar en muchos materiales, por lo que no los presentaré uno por uno aquí. Describiré directamente el proceso de implementación de la red PP en el lenguaje JAVA de la tecnología JXTA a través del código. Describiré el proceso de implementación de la red PPC en JXTA usando el lenguaje JAVA directamente a través del código. El primer paso, necesita descargar la biblioteca de clases JXTA, puede descargar la última versión de JXTA aquí (¡Lo siento, no se puede cargar más allá del límite! Subiré el manual técnico incluido el formato CHM en el foro) Paso 2 Crear un nuevo proyecto JAVA, agregue estos paquetes JAR a la ruta de compilación (aquí, use Eclipse con otros IDE o agregue directamente estos paquetes JAR a CLASSPATH. En el paso 3, comenzaremos a escribir código y crearemos una nueva clase). el código de su método de llamada es el siguiente
public static void main(String[] args) {?RestoPeer myapp = new RestoPeer();?// ¿Crear una instancia de un objeto par aquí? myapp startJxta();?// Inicie aquí el método JXTA, que se utiliza para unirse a grupos, obtener servicios, etc. System exit( );?//Únase al grupo de pares predeterminado NetPeerGroup Netpg = new NetPeerGroupFactory() getInterface() } catch (PeerGroupException e) {// TODO Bloque de captura generado automáticamente printStackTrace() }}
Una cosa a tener en cuenta aquí es que debido a la actualización continua de la tecnología JXTA, la estructura y la implementación de su biblioteca de clases han sufrido cambios significativos. En esta versión, agregar un grupo de pares predeterminado es un método nuevo y el método del manual técnico de JXTA está obsoleto. Paso 4 Necesitamos obtener el servicio de descubrimiento proporcionado por el grupo de pares predeterminado
?DiscoveryService disco = netpggetDiscoveryService()
En este punto, podemos usar el servicio disco para encontrar qué. Necesitamos un servicio de descubrimiento. Paso 5 Necesitamos encontrar un grupo de pares propio; si no lo encontramos, crear uno. Esto sólo se hace para obtener los servicios que necesitamos, ya que no todos los servicios en todos los grupos de pares son iguales. Generalmente organizamos a los pares con el mismo propósito en un grupo de pares.
El código para unirse al grupo de pares es el siguiente (este ejemplo se describe utilizando el ejemplo del servicio de subasta de restaurantes en el "Manual técnico de JXTA")
// ¿Unirse al grupo de subasta? private void joinRestoNet() {?int count = // ¿Número máximo de veces para intentar encontrar un bucle? System out println(Intento de descubrimiento de grupo llamado RestoNet peer group); sistema out println(Intento de descubrimiento de grupo llamado RestoNet peer group); sistema out println(Intento de descubrimiento de grupo llamado RestoNet peer group);?Enumeración ae = null; ¿Registrar anuncios encontrados? // Realiza un bucle hasta que se encuentre el grupo de pares RestoNet o se alcance el número esperado de intentos de descubrimiento.
ae = hdisco getLocalAdvertisements(DiscoveryService GROUP Name RestoNet); // Si se encuentra el anuncio del grupo de pares RestoNet, este método completa la salida del bucle if ((ae ! = null) amp; amp; ae hasMoreElements()) {break;? }// Si no se encuentra localmente, envíe una solicitud de descubrimiento remoto // Los parámetros son el ID del par que se encontrará en orden; nulo no se utiliza como condición de descubrimiento. El tipo de notificación descubierto también toma el valor PEER y ADV. El nombre del atributo de anuncio que se descubrirá es el valor del atributo ¿El número máximo de anuncios obtenidos por el oyente de descubrimiento? hdisco getRemoteAdvertisements(null DiscoveryService GROUP Name RestoNet null);?// El hilo se detiene por un momento, esperando la solicitud de descubrimiento de. el par intenta {?Thread sleep(timeout);?} catch (InterruptedException e ) {// TODO Bloqueo de captura generado automáticamente printStackTrace() }?} catch (IOException e) {// TODO Bloqueo de captura generado automáticamente printStackTrace(); }}?/* ?* Lo anterior es el proceso de bucle para descubrir el grupo objetivo, lo siguiente es el proceso de unirse. * */?// Crear una referencia de anuncio de grupo de pares PeerGroupAdvertisement restoNetAdv = null ?// Verifique si encontramos un anuncio de RestoNet. Si no encontramos uno, significa que probablemente seamos el primer miembro de la red de pares en intentar unirnos. el grupo. // U otros miembros de la red de pares que saben que el grupo RestoNet está inactivo o es inaccesible // Si esto sucede, debemos crear un grupo de pares RestoNet?if (ae == null || !ae hasMoreElements()) { // Si el grupo no está presente Dar una pista ¿Crear el grupo? Sistema fuera println(No se pudo encontrar el grupo de pares RestoNext; creándome, intente {? // Crear un nuevo grupo de pares RestoNet OmniPeerGroup?// Obtener el par general a través de NetPeerGroup Esperando); para anuncio de grupo? ModuleImplAdvertisement implAdv = netpg getAllPurposePeerGroupImplAdvertisement(); // Cree un nuevo grupo de pares JXTA a través de NetPeerGroup y publique anuncios de grupos de pares usted mismo // Los parámetros son ID del grupo de pares nombre del grupo de anuncios descripción restoNet = netpg newGroup(mkGroupID() implAdv RestoNet RestoNet Inc ) ; // Obtener un anuncio de grupo de pares restoNetAdv = netpg getPeerGroupAdvertisement() } catch (Exception e) {// TODO Bloqueo de captura generado automáticamente p
rintStackTrace(); }} else {// Encontrar el anuncio de RestoNet en el caché significa que podemos unirnos a este grupo existente // Extraer un elemento de anuncio de grupo de pares de la colección restoNetAdv = (PeerGroupAdvertisement) ae nextElement(); únase al grupo de pares ya que el anuncio ya se publicó y JXTA no lo publicará nuevamente restoNet = netpg newGroup(restoNetAdv);; system out println( busque el grupo de pares RestoNet y únase a él donde exista } catch (PeerGroupException e) { // TODO Bloque de captura generado automáticamente?e printStackTrace(); }}// Obtenga el servicio de descubrimiento y el servicio de canalización proporcionados por RestoNet disco = restoNet getDiscoveryService(); restoNet getPipeService() println( RestoNet Restaurant_( brand ) running); return; }
En este punto, nos hemos unido o creado un grupo de pares RestoNet, que se encuentra en NetPerrGroup. Si no se puede encontrar, es un problema con el entorno de la red, o el tiempo de espera es demasiado corto o el número de ciclos es demasiado pequeño. Debido a que P2P es una red poco confiable, es difícil determinar cuál es este parámetro y cuál es su necesidad. determinarse en función de la situación real. Entonces, ya estamos en la red P2P, cuando obtenemos la instancia del grupo de pares predeterminado, ya estamos en la red P2P. De hecho, cuando obtuvimos la instancia de grupo de pares predeterminada, ya estábamos en una red PPP, pero ahora encontramos o creamos el grupo de pares que necesitamos a través del descubrimiento de red y nos unimos a él, entonces podemos proporcionar y consumir los servicios proporcionados por un grupo de pares. o por pares en un grupo de pares. ¡Estén atentos a las aplicaciones que aprovechan la tecnología JXTA para la comunicación universal de personajes y la transmisión de datos multimedia! Lo anterior son todas experiencias y entendimientos personales en la práctica. Si hay algún error, no dude en criticar y señalar. Si necesita comunicarse, agregue la descarga del código fuente de MSN. Hace unos días, publiqué un artículo sobre el uso. Tecnología JXTA para construir redes PP, que recibió mucha atención y apoyo de mis amigos. Ahora, en respuesta a la solicitud de mis amigos, subiré algunos códigos fuente de prueba para referencia y discusión de todos. También espero que todos puedan proporcionar más. opiniones valiosas! Cabe señalar que los dos archivos en src rar deben colocarse en diferentes directorios de trabajo para que se ejecuten correctamente, porque JXTA configurará un directorio de caché para cada par cuando se ejecute por primera vez. Por ejemplo, en el mismo espacio de trabajo, este último. La información será sobrescrita por la primera, por lo que se recomienda utilizar diferentes espacios de trabajo. Es mejor realizar la prueba en dos computadoras al mismo tiempo. Aparecerá una ventana de configuración cuando se ejecute por primera vez. el nombre de usuario y la contraseña. No necesita preocuparse por otras configuraciones. La contraseña debe tener más de ocho dígitos. Los otros tres paquetes son bibliotecas JXTA. Descomprímalos e impórtelos al proyecto. Artículo/programa/Java/Javascript/201311/ 25439