Avatar billede rasmuslh Nybegynder
15. juli 2006 - 18:32 Der er 10 kommentarer og
1 løsning

Simulering af p2p i Java-program

Hejsa

Jeg har været væk fra Java i et langt stykke tid, men sidder med et sommerprojekt som driller.

Jeg skal forsøge at simulere et p2p netværk ved at lave en række objekter der er forbundet med hinanden.

Hver knude i netværket får en nøgle mellem 0-100 som bestemmer deres placering.
I den simple version jeg arbejder på er hver node forbundet med den node der har den nærmeste større nøgle. Eller den mindste hvis den selv har den største nøgle. På den måde laves der en form for cirkel af noderne.

Ex:
node1 (key=10) --> node2 (key=20)
node2 (key=20) --> node3 (key=30) 
node10 (key=100) --> node1 (key=10)


Jeg har to problemer:

1. For det første vil jeg gerne lave en række objekter dynamisk der hver skal udgive sig for at være en node i p2p netværket.
I første opgang tænker jeg at 10 objekter vil være fint. Jeg tænker mig at objekterne skal puttes ind i et typesikkert array.

Kan man lave objekter i en for-løkke - altså evt. bruge tælleren i løkken til navngivningen? Jeg har siddet med php det sidste år så at kommme tilbage til Java er lidt af en omvæltning. :-(

Altså noget ala:

Hvor node-konstruktoren tager et argument der er nøglen.

for (int k = 0 ; k < 101 ; k += 10) {

      Node node+k = new Node(k);

      // indsættelse i en eler anden form for array.
}


2. Derefter vil jeg gerne forsøge at oprette 10 tråde der hver skal have 10 objekter for at simulere noget concurrency.


Håber der er der kan hjælpe.

Rasmus
Avatar billede arne_v Ekspert
15. juli 2006 - 18:36 #1
en ArrayList var vel oplagt til at gemme dem i

fra Java 1.5 kan du bruge ArrayList<Node>

tråde er også ret simpelt - se evt. min artikel om samme
Avatar billede rasmuslh Nybegynder
15. juli 2006 - 19:30 #2
Hvad med den dynamiske generering af objekter?

Og gider du linke til din artikel om tråde.

På forhånd tak

Rasmus
Avatar billede arne_v Ekspert
15. juli 2006 - 19:48 #3
Avatar billede rasmuslh Nybegynder
15. juli 2006 - 19:49 #4
Fandt den  selv. :D
Avatar billede arne_v Ekspert
15. juli 2006 - 19:56 #5
og new Node er vel dynamisk ?
Avatar billede rasmuslh Nybegynder
15. juli 2006 - 20:09 #6
Jeg forstår ikke helt hvad du mener. Jeg vil gerne generere et antal objekter af typen Node i en form for løkke struktur. Jeg er dog i tvivl om hvordan det gøres ikke mindst dynamisk navngivning af objekterne. 

Jeg vil gerne gøre noget ala det her:

for (int k = 0 ; k < 101 ; k += 10) {

      Node node+k = new Node(k);
}

Men det kan man jo ikke... :-(
Avatar billede arne_v Ekspert
15. juli 2006 - 20:13 #7
det er det som ArrayList gør

ArrayList<Node> lst = new ArrayList<Node>;
for (int k = 0 ; k < 101 ; k += 10) {

      lst.Add(new Node(k));
}

så kan du bruge lst.get(i) til at hente den i'te node
Avatar billede arne_v Ekspert
15. juli 2006 - 20:14 #8
hvis du vil slå op på k så skal du bruge en HashMap (som svarer til PHP
associativt array)
Avatar billede rasmuslh Nybegynder
15. juli 2006 - 20:34 #9
Ahhhh - now I get it. :D

Jeg prøver det lige af senere og vender så frygteligt tilbage. Tak for hjælpen og læg lige et svar. Jeg går nok i stå når jeg skal "fordele" objekter ud på trådene, men den tid den sorg. :D

God weekend

Rasmus
Avatar billede arne_v Ekspert
15. juli 2006 - 20:36 #10
svar
Avatar billede rasmuslh Nybegynder
16. juli 2006 - 12:16 #11
Tak for hjælpen.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester