|
| Alternativ til rmi Fra : Jens Peter Rosenkvis~ |
Dato : 15-06-05 16:38 |
|
Jeg kunne godt tænkte mig at lave et Java-program, hvor det er muligt at
kommunikere mellem to pc'er over nettet. Altså ud fra en IP.
Jeg har kigget noget på RMI, men synes at det lyder noget indviklet,
bl.a. fordi der skal være en server.
Findes der en lettere metode til det?
| |
Morten Dahl (15-06-2005)
| Kommentar Fra : Morten Dahl |
Dato : 15-06-05 16:48 |
|
Jens Peter Rosenkvist wrote:
> Jeg kunne godt tænkte mig at lave et Java-program, hvor det er muligt at
> kommunikere mellem to pc'er over nettet. Altså ud fra en IP.
> Jeg har kigget noget på RMI, men synes at det lyder noget indviklet,
> bl.a. fordi der skal være en server.
>
> Findes der en lettere metode til det?
Det er paa et lavere niveau end RMI, men der findes ogsaa sockets
http://java.sun.com/docs/books/tutorial/networking/sockets/index.html
| |
Kasper G. Christense~ (16-06-2005)
| Kommentar Fra : Kasper G. Christense~ |
Dato : 16-06-05 05:53 |
|
>>Jeg kunne godt tænkte mig at lave et Java-program, hvor det er muligt at
>>kommunikere mellem to pc'er over nettet. Altså ud fra en IP.
>>Jeg har kigget noget på RMI, men synes at det lyder noget indviklet,
>>bl.a. fordi der skal være en server.
Hmm, hvordan vil du gøre det uden at mindst et af de indgående
programmer skal være "server", dvs. skal vente på forespørgsler på en
bestemt port?
>>Findes der en lettere metode til det?
>
>
> Det er paa et lavere niveau end RMI, men der findes ogsaa sockets
> http://java.sun.com/docs/books/tutorial/networking/sockets/index.html
Hvorvidt det er lettere, afhænger temmelig meget af hvad du skal lave.
Skal du kun sende en enkelt eller nogle få simple meddelelser, så er
sockets måske lettere, men bliver det mere avanceret kommunikation skal
du nærmest til at opfinde din egen protokol, og så er rmi måske
pludselig det lette alternativ.
Skal det være rigtig fancy, så du også kan kommunikere med programmer
skrevet i andre sprog, kan du tage et kig på CORBA, men det kvalificerer
helt sikkert ikke som værende lettere.
Mvh. Kasper
| |
Soren (News) (16-06-2005)
| Kommentar Fra : Soren (News) |
Dato : 16-06-05 08:17 |
|
Jens Peter Rosenkvist <jensercube@ofir.dk> writes:
> Jeg kunne godt tænkte mig at lave et Java-program, hvor det er muligt
> at kommunikere mellem to pc'er over nettet. Altså ud fra en IP.
> Jeg har kigget noget på RMI, men synes at det lyder noget indviklet,
> bl.a. fordi der skal være en server.
Du kommer nok ikke ud over at en (eller begge) af dine PCer skal
agere som "server" (dvs. lytte efter forbindelser fra den anden
PC).
Du maa nok beskrive lidt mere hvad det er du vil kommunikere for at
man kan faa en ide om hvad der vil vaere bedst. Der findes
klassebiblioteker til naesten en hvilkensomhelst form for kommunikation
du har brug for - det er bare at finde det rigtige til opgaven.
Mvh, Soren
| |
Jens Peter Rosenkvis~ (16-06-2005)
| Kommentar Fra : Jens Peter Rosenkvis~ |
Dato : 16-06-05 16:11 |
|
Soren (News) wrote:
> Jens Peter Rosenkvist <jensercube@ofir.dk> writes:
>
>
>>Jeg kunne godt tænkte mig at lave et Java-program, hvor det er muligt
>>at kommunikere mellem to pc'er over nettet. Altså ud fra en IP.
>>Jeg har kigget noget på RMI, men synes at det lyder noget indviklet,
>>bl.a. fordi der skal være en server.
>
>
> Du kommer nok ikke ud over at en (eller begge) af dine PCer skal
> agere som "server" (dvs. lytte efter forbindelser fra den anden
> PC).
>
> Du maa nok beskrive lidt mere hvad det er du vil kommunikere for at
> man kan faa en ide om hvad der vil vaere bedst. Der findes
> klassebiblioteker til naesten en hvilkensomhelst form for kommunikation
> du har brug for - det er bare at finde det rigtige til opgaven.
Jeg prøvede 'socket' som Morten Dahl nævnte, og jeg kan godt bruge det,
selvom det ikke var helt hvad jeg forventede.
Det jeg skal lave, er to brugere ved hver deres pc, som starter det
samme java program. Herefter skal det være muligt for dem, at
kommunikere med hinanden. Det ville skulle fungere på samme måde, som
hvis de skulle spille kryds og bolle med hinanden. Altså, når den ene
foretager et valg, bliver dette sendt til den anden bruger og det bliver
hans tur.
Problemet, som jeg ser det, er, at ved rmi skal brugeren selv skrive
'start rmiregistry'. Men det kan jo være, at jeg har misforstået det.
| |
Kasper G. Christense~ (16-06-2005)
| Kommentar Fra : Kasper G. Christense~ |
Dato : 16-06-05 16:31 |
|
> Problemet, som jeg ser det, er, at ved rmi skal brugeren selv skrive
> 'start rmiregistry'. Men det kan jo være, at jeg har misforstået det.
Jeg kan ikke lige huske detaljerne om rmi, det er noget tid siden jeg
har brugt det, men hvis problemet udelukkende er at du ikke ønsker at
bebyrde brugeren med opstart af name-servicen rmiregistry, kunne du jo
blot vælge at lave et lille script (bat-fil i windows) der indeholder
linierne:
start rmiregistry
java mitProgram
og så bede brugeren starte denne, når han skal bruge programmet.
Mvh. Kasper
| |
Jens Peter Rosenkvis~ (16-06-2005)
| Kommentar Fra : Jens Peter Rosenkvis~ |
Dato : 16-06-05 16:47 |
|
Kasper G. Christensen wrote:
> [snip]
>
> start rmiregistry
> java mitProgram
>
> og så bede brugeren starte denne, når han skal bruge programmet.
Det kunne jeg selvfølgelig, men vil der så ikke stadig skulle ligge et
vindue i baggrunden hele tiden?
| |
Kasper G. Christense~ (16-06-2005)
| Kommentar Fra : Kasper G. Christense~ |
Dato : 16-06-05 16:54 |
|
>> start rmiregistry
>> java mitProgram
>>
>> og så bede brugeren starte denne, når han skal bruge programmet.
>
>
> Det kunne jeg selvfølgelig, men vil der så ikke stadig skulle ligge et
> vindue i baggrunden hele tiden?
Nej, det tror jeg ikke er nødvendigt. Er ikke lige helt sikker på jeg
kan huske hvordan det fungerer i windows, men jeg mener at hvis dit
program har en gui, skal du bare benytte "javaw" i stedet for "java" altså:
start rmiregistry
javaw mitProgram
og har det ikke en gui, ja så er det bare som tidligere nævnt. Giver det
et ekstra vindue?
Mvh. Kasper
| |
Morten Dahl (16-06-2005)
| Kommentar Fra : Morten Dahl |
Dato : 16-06-05 16:54 |
|
Jens Peter Rosenkvist wrote:
> Kasper G. Christensen wrote:
>
>> [snip]
>>
>> start rmiregistry
>> java mitProgram
>>
>> og så bede brugeren starte denne, når han skal bruge programmet.
>
>
> Det kunne jeg selvfølgelig, men vil der så ikke stadig skulle ligge et
> vindue i baggrunden hele tiden?
Jeg maa erkende at jeg ikke selv har proevet det, men efter sigende kan
du ogsaa kode Java til Microsofts .NET platform.. Deres bud paa RMI er
Remoting, og det har ikke de problemer du beskriver her..
| |
Claus Thrane (16-06-2005)
| Kommentar Fra : Claus Thrane |
Dato : 16-06-05 17:12 |
|
Jens Peter Rosenkvist wrote:
> Soren (News) wrote:
>
>> Jens Peter Rosenkvist <jensercube@ofir.dk> writes:
>>
>>
>>> Jeg kunne godt tænkte mig at lave et Java-program, hvor det er muligt
>>> at kommunikere mellem to pc'er over nettet. Altså ud fra en IP.
>>> Jeg har kigget noget på RMI, men synes at det lyder noget indviklet,
>>> bl.a. fordi der skal være en server.
>>
>>
>>
>> Du kommer nok ikke ud over at en (eller begge) af dine PCer skal
>> agere som "server" (dvs. lytte efter forbindelser fra den anden
>> PC).
>>
>> Du maa nok beskrive lidt mere hvad det er du vil kommunikere for at
>> man kan faa en ide om hvad der vil vaere bedst. Der findes
>> klassebiblioteker til naesten en hvilkensomhelst form for kommunikation
>> du har brug for - det er bare at finde det rigtige til opgaven.
>
>
> Jeg prøvede 'socket' som Morten Dahl nævnte, og jeg kan godt bruge det,
> selvom det ikke var helt hvad jeg forventede.
>
> Det jeg skal lave, er to brugere ved hver deres pc, som starter det
> samme java program. Herefter skal det være muligt for dem, at
> kommunikere med hinanden. Det ville skulle fungere på samme måde, som
> hvis de skulle spille kryds og bolle med hinanden. Altså, når den ene
> foretager et valg, bliver dette sendt til den anden bruger og det bliver
> hans tur.
>
> Problemet, som jeg ser det, er, at ved rmi skal brugeren selv skrive
> 'start rmiregistry'. Men det kan jo være, at jeg har misforstået det.
Det lyder umiddelbart som om det er RMI du skal have fat i.
RMI registry kan godt startes automatisk ..
--
import java.rmi.registry.*;
int port = 4242;
Registry reg = LocateRegistry.createRegistry(port);
--
det er ca det der skal bruges.
Hvis du får brug for det og det skal være lidt mere fancy vil jeg
anbefale du kigger lidt på nedenstående link - det vil give dig mulighed
for at tilpasse RMI registret (lave dit eget), så det er lidt nemmere at
arbejde med.
http://java.sun.com/products/jndi/
Claus Thrane
| |
Jens Peter Rosenkvis~ (18-06-2005)
| Kommentar Fra : Jens Peter Rosenkvis~ |
Dato : 18-06-05 17:36 |
|
Claus Thrane wrote:
> import java.rmi.registry.*;
>
> int port = 4242;
>
> Registry reg = LocateRegistry.createRegistry(port);
> --
>
> det er ca det der skal bruges.
>
Tak. Det var lige hvad jeg havde brug for.
Også tak til jer andre som hjalp. Skal nok vænne tilbage, hvis jeg får
flere problemer med det. ;)
| |
RpR (21-06-2005)
| Kommentar Fra : RpR |
Dato : 21-06-05 10:00 |
|
> Tak. Det var lige hvad jeg havde brug for.
>
> Også tak til jer andre som hjalp. Skal nok vænne tilbage, hvis jeg får
> flere problemer med det. ;)
Jeg har lavet et chat program engang i forbindelse med min uddannelse,
baseret på RMI.
Du skal ha' en "chatserver", som alle klienterne kobler op imod.
Når så én klient laver noget, så skal chatserveren give alle andre klienter
besked på hvad han foretager sig (skriver en besked, sætter et kryds, osv).
Da der blir lavet kald tilbage fra chatserveren til klienten skal du ha'
mappet den port som du vælger at bruge, i klientens firewall.
Tænk på at klienterne også fungerer som en server, da de også lytter på en
bestemt port efter beskeder fra chatserveren.
Spørg endelig hvis du har flere spørgsmål
--
- RpR
~=[ www.MopedGallery.dk ]=~
~=[ www.PhotoBlog.dk ]=~
--
| |
Jens Peter Rosenkvis~ (22-06-2005)
| Kommentar Fra : Jens Peter Rosenkvis~ |
Dato : 22-06-05 00:48 |
|
RpR wrote:
> Du skal ha' en "chatserver", som alle klienterne kobler op imod.
>
> Når så én klient laver noget, så skal chatserveren give alle andre klienter
> besked på hvad han foretager sig (skriver en besked, sætter et kryds, osv).
Sådan har jeg ikke lavet det. Første forbinder man til en server, som
giver en oversigt over online brugere. Herefter opretter man selv
direkte forbindelse til de brugere, som er online. Herved bliver den
centrale server minimalt belastet.
| |
RpR (02-07-2005)
| Kommentar Fra : RpR |
Dato : 02-07-05 13:12 |
|
> Sådan har jeg ikke lavet det. Første forbinder man til en server, som
> giver en oversigt over online brugere. Herefter opretter man selv
> direkte forbindelse til de brugere, som er online. Herved bliver den
> centrale server minimalt belastet.
Så er det heller ikke server-klient, men peer-to-peer vi snakker om
Men ja, det er ihvertfald en mulighed.
Kan dog give problemer da der så skal åbnes en port for hver klient, hos
hver klient. Det kan hurtigt blive rigtigt mange porte.
--
- RpR
~=[ www.MopedGallery.dk ]=~
~=[ www.PhotoBlog.dk ]=~
--
| |
Jens Peter Rosenkvis~ (03-07-2005)
| Kommentar Fra : Jens Peter Rosenkvis~ |
Dato : 03-07-05 14:24 |
|
RpR wrote:
> Kan dog give problemer da der så skal åbnes en port for hver klient, hos
> hver klient. Det kan hurtigt blive rigtigt mange porte.
Der kan da godt være flere der forbinder til den samme server med samme
port...?
| |
Morten Dahl (16-06-2005)
| Kommentar Fra : Morten Dahl |
Dato : 16-06-05 17:07 |
|
Jens Peter Rosenkvist wrote:
> Det jeg skal lave, er to brugere ved hver deres pc, som starter det
> samme java program. Herefter skal det være muligt for dem, at
> kommunikere med hinanden. Det ville skulle fungere på samme måde, som
> hvis de skulle spille kryds og bolle med hinanden. Altså, når den ene
> foretager et valg, bliver dette sendt til den anden bruger og det bliver
> hans tur.
Du kan maaske give dig i kast med JavaSpaces:
http://www.javaworld.com/javaworld/jw-11-1999/jw-11-jiniology.html
- de naevner et chat system ca. midt i artiklen..
| |
|
|