Avatar billede jespersahner Nybegynder
10. juli 2006 - 16:13 Der er 9 kommentarer og
1 løsning

Mini-server

Jeg ønsker at lave en simpel Java-applikation, der venter på request udefra - altså en slags server-funktionalitet i sin helt enkle form.

I sin simpleste udgave kunne der være tale om en applikation, der venter på og viser en modtaget besked i en dialogboks, når beskeden modtages fra en anden maskine.

Hvilken teknik skal man have fat i her?
Avatar billede arne_v Ekspert
10. juli 2006 - 16:17 #1
sockets eller RMI vil jeg tro
Avatar billede jespersahner Nybegynder
10. juli 2006 - 20:59 #2
->arne_v: Tak.

Lad mig spørge lidt mere uddybende: Antag at jeg har en række brugere, som med jævne mellemrum skal modtage forskellige nyheder fra en tjeneste. Når der er en nyhed, skal brugerne modtage beskeden via en dialogboks/pop-up vindue eller f.eks. en lyd. I denne situation vil jeg umiddelbart tænke på brugerne som klienter og tjenesten som server.

Men hvordan skal teknikken så skrues sammen? Ja, brugernes applikation kan f.eks. med faste mellemrum spørge serveren, om der er nyheder og i bekræftende fald vise dialogboksen. Dette er dog ikke umiddelbart hensigtsmæssigt, idet de fleste requests (hvis der requestes ofte) vil resultere i ingenting, idet der ikke er nyheder. Her kunne man som jeg ser det med fordel vende klient/server-forholdet om, således at brugernes applikation er små servere, der lytter på requests. Når tjenesten har en nyhed (og kun da) orienteres serverne. Dette vil minimere antallet af requests til det absolut nødvendige, idet linien kun belastes, når der er en nyhed. Dette kan have stor betydning ved mange brugere, der har brug for real-time nyheder.

Er dette en rigtig måde at tænke på? - altså at vende klient/server-forholdet.
Avatar billede arne_v Ekspert
10. juli 2006 - 21:06 #3
det kan du goere baade med sockets og med RMI

sockets er af natur bidirectional

RMI understoetter det man kalder callbacks hvor serveren kan kalde klienten
Avatar billede arne_v Ekspert
10. juli 2006 - 21:09 #4
du bruger en subscriber publisher model

sockets er lige ud af landevejen - grundliggende har server en ServerSocket som
accepterer connections og gemmer Socket, den skriver saa til alle relevante klienter,
hver klient har an Thread som staar i blocking read paa dens Socket og displayer
naar der kommer noget

RMI kraever mindre kode men er maaske lidt mere kompleks - laes evt. min avanceret
RMI artikel
Avatar billede jespersahner Nybegynder
10. juli 2006 - 21:31 #5
->arne_v: Tak for din uddybning.

Et enkelt tillægsspm.: Antag at man distribuerer nyheder via en hjemmeside, og brugerne igen skal orienteres som forklaret. Er du da bekendt med, om der her - altså ved brug af "almindelig" HTTP, HTML mv. - er muligt at etablere det omtalte forhold; altså at siden så at sige automatisk opdateres hos brugerne, når der er noget nyt at rapportere?

De teknikker du omtaler kan vel naturligt bygges ind i en Java-applet, som jo så kører via en hjemmeside, men jeg er lidt interesseret i, om samme teknik (også) kan etableres uden bruge af Java/Java-applets.
Avatar billede arne_v Ekspert
10. juli 2006 - 21:37 #6
nej - HTTP protokollen en restriktion - alle interaktioner initiers af client

java applet eller flash kan lytte paa en socket
Avatar billede jespersahner Nybegynder
11. juli 2006 - 02:09 #7
->arne_v: Er det en sikkerhedsmæssig restriktion? Rent funktionelt er det vel noget skidt i en situation med mange brugere, der har brug for real-time information, tænker jeg. Her ville det netop være elegant med interaktion initieret af server for at begrænse trafikken. Er det i øvrigt det samme med FTP? Og et sidste måske dumt spm.: Vil man kunne omgå denne restriktion ved at bruge passende Java-Script i stedet for f.eks. en applet?
Avatar billede arne_v Ekspert
11. juli 2006 - 02:16 #8
sådan er HTTP protokollen - jeg ved ikke præcis hvorfor den er sådan

hvorfor tror du de store chats normalt foretrækker en java applet eller en flash
løsning fremfor en ren HTML refresh løsning ?  :-)

FTP protokollen er en rædsel - jeg tror ikke at den er egnet til dit formål

nej - JavaScript eller ej - HTTP er som HTTP er
Avatar billede jespersahner Nybegynder
11. juli 2006 - 12:22 #9
->arne_v: Fin diskussion, smid gerne et svar.
Avatar billede arne_v Ekspert
11. juli 2006 - 12:55 #10
svar
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