Avatar billede egendar Nybegynder
06. maj 2002 - 13:39 Der er 3 kommentarer og
1 løsning

select() til Java i forbindelse med Sockets

Under min implementation af et kommunikationslag til et Distributed Shared Memory-system er jeg stødt på et mindre problem. Kommunikationen skal foregå via Sockets og der er tale om et system, hvor alle noder skal kommunikere med alle andre noder. Dvs i den trivielle løsning oprettes der n-1 tråde på hver node. Imidlertid skal systemet kunne skalere til et stort antal processorer og derfor er denne løsningsmodel ikke voldsom interessant (512 kommunikationstråde per node :-)

Unix understøtter systemkaldet select() der tillader at man lader en proces lytte på en række Sockets(porte) men det er ikke lykkedes mig at finde en Java-pendant til dette 'dejlige' kald. Og her kommer spørgsmålet så - er der nogen der kender/har hørt om noget der minder om (eller er) et select-kald i Java?
Avatar billede jakoba Nybegynder
06. maj 2002 - 13:49 #1
Du skal vel have et posthus hvortil alle sender deres meddelelser (formatteret så oposthuset kan skrælle et lag af og finde den korrekte destination). Posthuset sender så videre til rette vedkommende med en afsenderadresse klistret på.

mvh JakobA
Avatar billede egendar Nybegynder
06. maj 2002 - 14:04 #2
Udemærket ide - havde givet den en tanke, men den skalerer ikke - bare ved 32 noder giver det for stort overhead.
Avatar billede logical Nybegynder
07. maj 2002 - 01:58 #3
Kig i java.nio.* under JDK 1.4
Avatar billede logical Nybegynder
07. maj 2002 - 02:05 #4
Rettelse, kig i java.nio.channels. Det er både en Selector, og Socket Channels, som du registrerer på din selector. Den skalerer fint som NB-I/O
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