P2P Seminar – JXTA im Detail
mit Java implementiert
(Java 2 Standard Edition)
Nicole Hänelt, Mike Rohland,
Julia Schenk, Rafael Grote
1
P2P – JXTA – Überblick
1) Definition
2)
3)
4)
5)
6)
7)
8)
9)
Welche Protokolle gibt es?
Peer Discovery Protocol API
Peer Resolver Protocol API
Peer Membership Protocol API
Peer Information Protocol API
Pipe Binding Protocol API
Peer Endpoint Protocol API
Beispiel
2
P2P – JXTA – Definition
Ein Protokoll ist ein wieder verwendbares
Verfahren um die Datenübertragung zwischen
Computern zu regeln.
(JXTA: Java P2P Programming; 22. March 2002)
Ein Protokoll (engl.: protocol) enthält Standards für
die kontrollierte Übermittlung von Daten
(www.net-lexikon.de; gesehen am 14.05.2004)
3
P2P – JXTA – Überblick
1) Definition
2) Welche Protokolle gibt es?
3)
4)
5)
6)
7)
8)
9)
Peer Discovery Protocol API
Peer Resolver Protocol API
Peer Membership Protocol API
Peer Information Protocol API
Pipe Binding Protocol API
Peer Endpoint Protocol API
Beispiel
4
P2P – JXTA – Protokolle
Welche Protokolle gibt es?
Grundservices, die in einem P2P-Netzwerk
ausgeführt werden können müssen:
• Discovery
• Membership
• Communication
– Pipe Binding Protocol
– Endpoint Protocol
– Resolver Protocol
• Peer Information Protocol
5
P2P – JXTA – Protokolle
6
(JXTA: Java P2P Programming; 22. March 2002)
P2P – JXTA – Überblick
1) Definition
2) Welche Protokolle gibt es?
3) Peer Discovery Protocol API
4)
5)
6)
7)
8)
9)
Peer Resolver Protocol API
Peer Membership Protocol API
Peer Information Protocol API
Pipe Binding Protocol API
Peer Endpoint Protocol API
Beispiel
7
P2P – JXTA – Peer Discovery API
Advertisements
• Dienen zur generellen Beschreibung einer jeden Resource,
die im P2P-Netz bereitgestellt wird
• Werden in XML-Dokumente gefasst
• Es gibt keine DTDs oder Schemata für Advertisments, es
reicht wenn ein Advertisment wohlgeformt ist
• von JXTA vorgegebene Lebensdauer
• Löschen
flushAdvertisements( String id, int type ) throws IOException;
8
P2P – JXTA – Peer Discovery API
Peer Group Advertisement
1 <?xml version="1.0"?>
2 <!DOCTYPE jxta:PGA>
3 <jxta:PGA xmlns:jxta="http://jxta.org">
4
<GID>
5
urn:jxta:uuid-AAA122616461AAAAAAA124615032503302
6
</GID>
7
<MSID>
8
urn:jxta:uuid-DEADBEEFDEAFBABAFEEDBABE000000010306
9
</MSID>
10
<Name>
11
Test
12
</Name>
13
<Desc>
14
Wir testen….
15
</Desc>
16 </jxta:PGA>
9
P2P – JXTA – Peer Discovery API
Discovery Query Message
<?xml version=“1.0“ encoding=“UTF-8“?>
<jxta:DiscoveryQuery>
<Type>2</Type>
<Threshold>1</Threshold>
<Attr>Name</Attr>
<Value>*pader*</Value>
<PeerAdv>
<?xml version=“1.0.“?>
<!DOCTYPE jxta:PA>
<jxta:PA xmlns=jxta=“http://jxta.org“>
<PID>urn:jxta:365738865...7424832749C</PID>
</jxta:PA>
</PeerAdv>
</jxta:DiscoveryQuery>
10
P2P – JXTA – Peer Discovery API
Discovery Response Message
<?xml version=“1.0“ encoding=“UTF-8“?>
<jxta:DiscoveryResponse>
<Type>2</Type>
<Count>1</Count>
<Attr>Name</Attr>
<Value>*pader*</Value>
<PeerAdv>
<?xml version=“1.0.“?>
<!DOCTYPE jxta:PA>
<jxta:PA xmlns=jxta=“http://jxta.org“>
<PID>urn:jxta:1235738865...742483DE4</PID>
</jxta:PA>
</PeerAdv>
<Response Expiration=“36000000“>
<?xml version=“1.0“?>
<!DOCTYPE jxta:PipeAdvertisement>
<jxta:PipeAdvertisement xmlns=“http://jxta.org“>
<Id>urn:jxta:uuid-05773264AB...EF56A468375</Id>
<Type>JxtaUnicastSecure</Type>
<Name>Jxta.webcam.paderborn</Name>
</jxta:PipeAdvertisement>
</Response>
</jxta:DiscoveryResponse>
11
P2P – JXTA – Peer Discovery API
12
(JXTA: Java P2P Programming; 22. March 2002)
P2P – JXTA – Peer Discovery API
Local Discovery
Veröffentlichung von Advertisements
publish(Advertisement adv, int type);
Im lokalen Cache (Cache Management Ordner) nach
Advertisements suchen
getLocalAdvertisements(int type, String attribute, String value);
Suche nach einem Peer „Bla“
getLocalAdvertisements(DiscoveryService.PEER, „Name“, „Bla“);
13
P2P – JXTA – Peer Discovery API
Mögliche Implementierung
1 private void findLocalAdvertisements ( ) {
2
System.out.println( ”looking local: ” );
3
try {
4
Enumeration enu = discoveryService.getLocalAdvertisements(DiscoveryService.ADV, null ,null);
5
if ((enu != null) && enu.hasMoreElements( )) {
6
System.out.println(”found local Advertisement: ”);
7
while (enu.hasMoreElements( )) {
8
Advertisement adv = (Advertisement)enu.nextElement( );
9
try {
10
Document doc = adv.getDocument(new MimeMediaType (”text/xml”));
11
doc.sendToStream(System.out);
12
}
13
catch (IOException e) {
14
e.printStackTrace(System.err);
15
}
16
}
17
}
18
}
19
catch (IOException e) {
20
e.printStackTrace(System.err);
21
}
14
22 }
(Oliver Steinhauer: JXTA Seminar, FU Gießen-Friedberg, SS03)
P2P – JXTA – Peer Discovery API
Remote Discovery
Veröffentlichung von Advertisements
remotePublish(Advertisement adv, int type);
Eine Anfrage an alle RendezvousPeers senden um ihre
lokale DB zu durchsuchen
getRemoteAdvertisements( String peerid, int type, String
attribute, String value, int threshold );
Problem:
Der Peer weiß nicht, wann die Advertisements gefunden
wurden.
15
P2P – JXTA – Peer Discovery API
Remote Discovery mit Listener
getRemoteAdvertisements( String peerid, int type, String attribute, String
value, int threshold, DiscoveryListener listener );
Bei jeder Antwort wird der DiscoveryListener aufgerufen.
discoveryEvent(DiscoveryEvent discoveryEvent); // behandelt
// Event vom Discovery Service
Das DiscoveryEvent Objekt
getResponse(); // liefter DiscoveryResponseMsg
DiscoveryResponseMsg
getResponses(); // liefert Aufzählung der Advertisements zurück
16
P2P – JXTA – Überblick
1) Einführung
2) Welche Protokolle gibt es?
3) Peer Discovery Protocol API
4) Peer Resolver Protocol API
5)
6)
7)
8)
9)
Peer Membership Protocol API
Peer Information Protocol API
Pipe Binding Protocol API
Peer Endpoint Protocol API
Beispiel
17
P2P – JXTA – Peer Resolver API
Peer Resolver API
- wird zur Suche im P2P Netz benutzt
- dazu werden Anfragen (query) an andere Peers versendet
- und Antworten (response) empfangen
- keine Übermittlungsgarantien
- Rendezvous Peers können Übermittlung ablehnen oder
dabei ausfallen
- keine Antwortgarantien
- weder wenn keine Antworten vorhanden noch Antworten
vorhanden
18
P2P – JXTA – Peer Resolver API
Resolver API Classes
- ResolverInterface – Interface zur Implementierung
des ResolverServices
- ResolverService – Interface definiert QueryHandler Verwaltung
- GenericResolver – Interface definiert senden von Messages
- QueryHandler – Interface zur Message Verarbeitung
- ResolverQuery – Standardimplementierung
- ResolverResponse – Standardimplementierung
19
P2P – JXTA – Peer Resolver API
QueryHandler im Detail
-int processQuery(ResolverQuery query)
- Ablaufsteuerung mittels Rückgabewert:
- ResolverService.OK
- ResolverService.Repropagate
- void processResponse
(ResolverResponse response);
-keine weitere Ablaufsteuerung da Endpunkt
20
P2P – JXTA – Peer Resolver API
I Benutzen des ResolverServices
Starten:
ResolverServiceImpl resolver;
resolver = (ResolverServiceImpl)group.
getResolverService();
TestQueryHandler handler = new
TestQueryHandler(handlerName,credential);
resolver.registerHandler(handlerName, handler);
Beenden:
resolver.unregisterHandler(handlerName);
21
P2P – JXTA – Peer Resolver API
II Benutzen des ResolverServices
Abfragen:
// xml AbfrageDokument erstellen
StructuredTextDocument doc = null;
doc = (…)StructuredDocumentFactory.
newStructuredDocument(
new MimeMediaType("text/xml"),"Pong");
Element e = doc.createElement("timestamp 1",
format.format(new Date(now)));
doc.appendChild(e);
String credential = „p2pSeminar";
22
P2P – JXTA – Peer Resolver API
III Benutzen des ResolverServices
// Query erstellen
ResolverQueryMsg message = null;
String xml = serializeDoc(doc);
message = new ResolverQuery(handlerName
, credential
, group.getPeerID().toString()
, xml
, 1);
// und versenden; löst eine RunTimeException
// aus, sofern der Peer nicht vorhanden
resolver.sendQuery(peerID, message);
23
P2P – JXTA – Überblick
1)
2)
3)
4)
Einführung
Welche Protokolle gibt es?
Peer Discovery Protocol API
Peer Resolver Protocol API
5) Peer Membership Protocol API
6)
7)
8)
9)
Peer Information Protocol API
Pipe Binding Protocol API
Peer Endpoint Protocol API
Beispiel
24
P2P – JXTA – Peer Membership API
Peer Membership API
- Mechanismus um PeerGroup beizutreten
- nicht zum Management einer PeerGroup gedacht
- Peer muss Anforderungen des Membership Protokolls erfüllen
- im Erfolgsfall wird ein credential vergeben
- kein zentrales Verzeichnis aller Gruppenmitglieder
25
P2P – JXTA – Peer Membership API
AuthenticationCredential und Credential
Credential -> Berechtigungsnachweis
(dict.leo.org; gesehen am 19.05.2004)
AuthenticationCredential enthält:
- Authentifizierungsmethode
- anfängliche Identifizierungsinformationen
Credential enthält:
- Identifizierungsinformationen
26
P2P – JXTA – Peer Membership API
MembershipService
Service
27
P2P – JXTA – Peer Membership API
I Ablauf eines PeerGroup Beitritts
// 1. MembershipService von der PeerGroup
//
empfangen
MembershipService membership;
membership = (MembershipService)
newGroup.getMembershipService();
// 2. AuthenticationCredential erstellen
AuthenticationCredential authCred
authCred = new AuthenticationCredential
(newGroup,authenticationMethod);
28
P2P – JXTA – Peer Membership API
II Ablauf eines PeerGroup Beitritts
// 3. Authenticator vom MembershipService
//
empfangen
Authenticator authenticator =
(Authenticator)membership.apply(authCred);
// 4. Authenticator Objekt ausfüllen
authenticator.methodXYZ(valueABC);
29
P2P – JXTA – Peer Membership API
III Ablauf eines PeerGroup Beitritts
/* 5. Authenticator mittels isReadyForJoin()
testen und
6. mit Authenticator beim MembershipService
anmelden
*/
if( authenticator.isReadyForJoin())
{
finalCredential =
membership.join(authenticator);
}
 Credential empfangen
30
P2P – JXTA – Überblick
1)
2)
3)
4)
5)
Einführung
Welche Protokolle gibt es?
Peer Discovery Protocol API
Peer Resolver Protocol API
Peer Membership Protocol API
6) Peer Information Protocol API
7) Pipe Binding Protocol API
8) Peer Endpoint Protocol API
9) Beispiel
31
P2P – JXTA – Peer Information API
Protokollhierarchie von JXTA
Peer Discovery Protokoll
(Standard)
Pipe Binding Protokoll
(Standard)
Peer Information Protokoll
(Standard)
Peer Resolver Protokoll (Core)
Peer Endpoint Protokoll
(Core)
Rendezvous Protokoll
(Standard)
Core - required components and behaviours for all
JXTA implementations
Standard – optional but recommended
32
P2P – JXTA – Peer Information API
Peer Information Protokoll
- Sobald ein Peer lokalisiert ist, ist es interessant seinen Status und
seine Fähigkeiten abzufragen  PIP
- Zwei Nachrichtentypen:
- Peer Info Query Message (Status des Remote Peers abfragen)
- Peer Info Response Message (Seinen Status einem anderen Peer
zugänglich machen)
- Spezielle Implementation des Peer Resolver Protokolls
- Peer publiziert seine PeerAdvertisement
 andere Peers lokalisieren diese und ziehen daraus Informationen über
den zugehörigen Peer
- Dient dem Standard JXTA Service PeerInfoService (optional aber
empfohlen)
33
P2P – JXTA – Peer Information API
PIP Query Message
<xs:element name="PeerInfoQueryMessage" type="jxta:PeerInfoQueryMessage"/>
<xs:complexType name="PeerInfoQueryMessage">
<xs:sequence>
<xs:element name="sourcePid" type="jxta:JXTAID"/>
<xs:element name="targetPid" type="jxta:JXTAID"/>
<!-- if not present then the response is the general peerinfo -->
<xs:element name="request" type="xs:anyType" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
request Feld kann genutzt werden um einen speziellen Request
zu bezeichenen, wenn nicht  Anfrage liefert default Set
von Informationen
34
P2P – JXTA – Peer Information API
PIP Response Message
<xs:element name="PeerInfoResponse" type="jxta:PeerInfoResponse"/>
<xs:complexType name="PeerInfoResponseMessage">
<xs:sequence>
<xs:element name="sourcePid" type="jxta:JXTAID"/>
<xs:element name="targetPid" type="jxta:JXTAID"/>
<xs:element name="uptime" type="xs:unsignedLong" minOccurs="0"/>
<xs:element name="timestamp" type="xs:unsignedLong" minOccurs="0"/>
<xs:element name="response" type="xs:anyType" minOccurs="0"/>
<xs:element name="traffic" type="jxta:piptraffic" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="piptraffic"> ...
<xs:complexType name="piptrafficinfo"> .......
35
P2P – JXTA – Peer Information API
PeerInfoService Interface
- Peer Informationen lokalisieren und speichern in
Form des PeerInfoAdvertisements.
36
P2P – JXTA – Peer Information API
PeerInfoAdvertisement
37
P2P – JXTA – Überblick
1)
2)
3)
4)
5)
6)
Einführung
Welche Protokolle gibt es?
Peer Discovery Protocol API
Peer Resolver Protocol API
Peer Membership Protocol API
Peer Information Protocol API
7) Pipe Binding Protocol API
8) Peer Endpoint Protocol API
9) Beispiel
38
P2P – JXTA – Pipe Binding API
JXTA ... Pipes ...
- Virtuelle Kommunikationskanäle zwischen Computern,
beschrieben durch PipeAdvertisements
- Bieten virtuelle Eingangs – und Ausgangsmailboxen,
die nicht physisch an eine spezielle Peer Lokation
gebunden sind
- Eindeutig identifiziert durch Pipe ID
- Zwei Enden:
- Input Pipe (empfangendes Ende)
- Output Pipe (sendendes Ende)
39
P2P – JXTA – Pipe Binding API
Pipe Binding Protokoll
- Regelt den Aufbau eines virtuellen Kanals zwischen zwei oder
mehreren Knoten
- JXTA HTTP Transport, JXTA TCP/IP Transport, JXTA TLS
Transport
- Wird verwendet um die Enden einer Pipe mit den jeweiligen
Endpunkten der Knoten zu verbinden
40
P2P – JXTA – Pipe Binding API
PipeAdvertisement
- Wird vom Pipe Service genutzt, um die Endpunkte
für lokalen Input und Output der Pipe zu erstellen
- Enthält Pipe ID
- Muss Pipe Type enthalten
- JxtaUnicast: unsicher und nicht zuverlässig
- JxtaUnicastSecure: Sicher (nutzt TLS)
- JxtaPropagate: senden an mehre
- Kann optionalen symbolischen Namen enthalten
41
P2P – JXTA – Pipe Binding API
Pipe Advertisement Schema
<xs:element name="PipeAdvertisment" type="jxta:PipeAdvertisment"/>
<xs:complexType name="PipeAdvertisement">
<xs:sequence>
<xs:element name="Id" type="jxta:JXTAID"/>
<xs:element name="Type" type="xs:string"/>
<xs:element name="Name" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
42
P2P – JXTA – Pipe Binding API
PipeService
43
P2P – JXTA – Pipe Binding API
Der Pipe Prozess
Ich such mir jemanden
zum reden
(1) Gruppe veröffentlicht Pipe
Advertisement
(2) Listener Peer erstellt input Pipe
aus Advertisement
(3) Talk Peer erstellt output Pipe,
die an den listener Peer adressiert
ist
(4) Talk Peer sendet Nachricht auf
die Pipe
(5) Listener empfängt Nachricht
Ich hab ein offenes Ohr, wer
erzählt mir was
(1)Peer der Information möchte
öffnet eine input Pipe
(2)Peer der Information möchte
veröffentlicht seine Pipe
(3)Peer mit Daten öffnet output
Pipe zur input Pipe
(4)Peer mit output Pipe sendet
Daten
44
P2P – JXTA – Pipe Binding API
Verbinden von Pipes
- Blind Pipe
- Listener Pipe ist immer blind und akzeptiert Verbindung von
jedem Peer
- Blind Output Pipe
- Blind Output Pipe with Listener
- Blind Input Pipe
- Blind Input Pipe with Listener
- Peer-addressed Pipe
- Adressed Output Pipe
 Output Pipes können sowohl blind als auch explizit
adressiert sein
45
P2P – JXTA – Pipe Binding API
Pipes, Pipes, Pipes…
- Bidirektionale Pipes
- Der BidirectionalPipeService ist ein optionaler Service, mit dem
(welch Wunder !) bidirektionale Pipes erzeugt werden können
- Reliable Pipes
- Mit dem ReliablePipeService können Nachrichten zuverlässig
über Pipes gesendet werden
- Nachrichten werden in der Reihenfolge empfangen in der sie
auch gesendet wurden
- Die Nachricht erreicht garantiert ihren Empfänger
- Können auch verschlüsselt werden
46
P2P – JXTA – Überblick
1)
2)
3)
4)
5)
6)
7)
Einführung
Welche Protokolle gibt es?
Peer Discovery Protocol API
Peer Resolver Protocol API
Peer Membership Protocol API
Peer Information Protocol API
Pipe Binding Protocol API
8) Peer Endpoint Protocol API
9) Beispiel
47
P2P – JXTA – Peer Endpoint API
Peer Endpoint Protocol
- Nachrichtenaustausch zwischen Peers
- wird hauptsächlich von anderen Protokollen benutzt
- direkte Benutzung sinnvoll für
• Implementierung neuer Endpoint-Protokolle
• Implementierung eigener Pipes
• Überwachung bzw. Steuerung des Netzes
- Zugriff über Interface PeerGroup:
EndpointService getEndpointService();
19.05.04
48
48
P2P – JXTA – Peer Endpoint API
Filter Listener
- zum Manipulieren oder Blockieren von Nachrichten
- Registrieren in EndpointService
void addIncomingMessageFilterListener(
MessageFilterListener listener,
String namespace,
String name);
- Interface MessageFilterListener
Message filterMessage(Message message,
EndpointAddress srcAddr,
EndpointAddress dstAddr);
19.05.04
49
49
P2P – JXTA – Peer Endpoint API
Ping
boolean ping(EndpointAddress addr);
- prüft Erreichbarkeit eines Peers
- ist unabhängig vom benutzten Protokoll
- unterscheidet sich vom traditionellen Netzwerk-Ping
• einzige Information: true oder false
• Verlässlichkeit hängt vom Protokoll ab
19.05.04
50
50
P2P – JXTA – Peer Endpoint API
Endpoint Messenger
- zum Senden von Nachrichten an einen Endpoint
- Messenger getMessenger(EndpointAddress addr)
- Interface Messenger
boolean sendMessage(Message msg)
throws IOException;
void close();
- entspricht OutputPipe (→ Pipe Binding)
19.05.04
51
51
P2P – JXTA – Peer Endpoint API
Endpoint Listener
- Registrieren in EndpointService
boolean addIncomingMessageListener(
EndpointListener listener,
String serviceName,
String serviceParam);
- Interface EndpointListener
void processIncomingMessage(
Message message,
EndpointAddress srcAddr,
EndpointAddress dstAddr);
19.05.04
52
52
P2P – JXTA – Überblick
1)
2)
3)
4)
5)
6)
7)
8)
Einführung
Welche Protokolle gibt es?
Peer Discovery Protocol API
Peer Resolver Protocol API
Peer Membership Protocol API
Peer Information Protocol API
Pipe Binding Protocol API
Peer Endpoint Protocol API
9) Beispiel
53
P2P – JXTA – Beispiel: Peer Group Discovery
Beispielprogramm: Peer Group Discovery
- Programmablauf
• Verbinden mit Rendezvous-Peer
• Senden einer DiscoveryRequest-Message
• Auflistung aller Peers der gefundenen PeerGroups
- Quelle
Sun Microsystems, Project JXTA 2.0:
Java Programmers Guide, 2003, Seiten 39-43
http://www.jxta.org/docs/JxtaProgGuide_v2.pdf
http://www.jxta.org/ProgGuideExamples.zip
20.05.04
54
54
P2P – JXTA – Beispiel: Peer Group Discovery
Start JXTA I
public class GroupDiscoveryDemo
implements DiscoveryListener {
static PeerGroup netPeerGroup = null;
private DiscoveryService discovery;
private RendezVousService rdv;
private void startJxta() {
try {
netPeerGroup =
PeerGroupFactory.newNetPeerGroup();
} catch ( PeerGroupException e) {...}
20.05.04
55
55
P2P – JXTA – Beispiel: Peer Group Discovery
Start JXTA II
discovery = netPeerGroup.getDiscoveryService();
rdv = netPeerGroup.getRendezVousService();
//Wait until we connect to a rendezvous peer
System.out.print("Waiting to connect...");
while (! rdv.isConnectedToRendezVous()) {
try {
Thread.sleep(2000);
} catch (InterruptedException ex) {}
}
System.out.println("connected!");
}
20.05.04
56
56
P2P – JXTA – Beispiel: Peer Group Discovery
Discovery Message
public void run() {
try {
// Register as a DiscoveryListener
discovery.addDiscoveryListener(this);
while (true) {
System.out.println("Sending a Dis...
// look for any peer group
discovery.getRemoteAdvertisements(null,
DiscoveryService.GROUP,null,null,5);
... // 60 Sekunden warten
}
20.05.04
57
57
P2P – JXTA – Beispiel: Peer Group Discovery
Discovery Listener I
public void discoveryEvent(DiscoveryEvent ev){
DiscoveryResponseMsg res = ev.getResponse();
String name = "unknown";
// Get the responding peer's advertisement
PeerAdvertisement peerAdv =
res.getPeerAdvertisement();
// some peers may not respond with peerAdv
if (peerAdv!=null) name = peerAdv.getName();
System.out.println (" Got a Di..." + name);
20.05.04
58
58
P2P – JXTA – Beispiel: Peer Group Discovery
Discovery Listener II
// now print out each discovered peer group
PeerGroupAdvertisement adv = null;
Enumeration enum = res.getAdvertisements();
if (enum != null ) {
while (enum.hasMoreElements()) {
adv = (PeerGroupAdvertisement)
enum.nextElement();
System.out.println(...+ adv.getName());
}
}
}
20.05.04
59
59
P2P – JXTA – Beispiel: Peer Group Discovery
Main
static public void main(String args[]) {
GroupDiscoveryDemo myapp =
new GroupDiscoveryDemo();
myapp.startJxta();
myapp.run();
}
}
20.05.04
60
60
P2P – JXTA – Beispiel: Peer Group Discovery
Ausgabe
Waiting to connect to rendezvous...connected!
Sending a Discovery message
Got a Discovery Response [3 elements]
from peer : unknown
Peer Group = football
Peer Group = mygroup
Peer Group = baseball
Sending a Discovery message
Got a Discovery Response [2 elements] from ...
Peer Group = testgroup1
Peer Group = soccer
20.05.04
61
61
P2P – JXTA – Quellen
Daniel Brookshier, Darren Govoni, Navaneeth Krishnan, Juan Carlos Soto:
JXTA: Java™ P2P Programming
Sams Publishing, March 22, 2002
http://java.sun.com/developer/Books/networking/jxta/jxtap2pch03.pdf
Oliver Steinhauer: JXTA Seminar, FU Gießen-Friedberg, SS03
Kai Wolter: JXTA, Universität Paderborn, 2002
Brendon J. Wilson, JXTA, New Riders, 2002
www.developer.com
www.jxta.org
www.net-lexikon.de
62
P2P Seminar – JXTA im Detail
The End…
Nicole Hänelt, Mike Rohland,
Julia Schenk, Rafael Grote
63

Folien