Sockets i JAVA

Tags:    java

Ved godt jeg lyder krævende, men vi har alle været begyndere engang.

Jeg ville virkelig blive glad, hvis der var en sød og flink gut der kunne lave min applet således:

Når man starter min applet skal den sende denne kommando til port 9999 og host: localhost:
1," + brugernavn + ",5,5,bil.gif

Hvis vi så siger der er 5 brugere der ser min applet, så hver gang der kommer en ny bruger ind skal den sende den kommando, også vil de forrige 5 brugere kunne se han kommer ind.

Har kigget lidt på de forskellige muligheder, og fundet frem til at man ikke behøves at lave en package og importere server og klinenten.

Der imod "tror" jeg at man skal lave en server for sig selv og klienten for sig selv, hvor de så står og lytter, tjekker og sender kommandoer tilbage.

Men mit problem er jeg ikke kan forstår HVORDAN jeg skal gøre det, for jeg har læst udviklere.dk's artikel om netværksprogrammering op til flere gange nu, men forstår stadig ikke hvordan i alverden man skal kunne kalde min klasse "newUser" i min applet, når klienten står i et cmd vindue og intet har til fælles med appleten.

Er der en flink fyr derså vil:
- Når en bruger ser appleten skal den sende en kommando, som alle brugere kan se.
- Når kommandoen fx "new,id,brugernavn,x,y,avatar" er landet og folk kan se den, skal den kalde min klasse "newUser" som er placeret i min applet.

Jeg ville virkelig blive så glad. Hvis der skal penge i, så sig til. Det kræver dog jeg får din e-mail adresse, og går stortset med til alt. Bare jeg får det lavet.



6 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 4 karma
Sorter efter stemmer Sorter efter dato
Håber flg. er simpelt nok til at forstå.

Fold kodeboks ind/udKode 




For det først bliver din applet afviklet i en sandbox, hvilket går at du KUN kan connecte til den server hvorfra Applet'en er loaded. Dette er dog ikke et problem så længe du tester lokalt (localhost). Jeg tror ikke som udgangspunkt std.out's kommer i konsollen da det er en applet. Men jeg kan ikke se hvor din relay server er? Der må være en ServerSocket et eller andet sted, som lytter på port 9999, som har relay'er login info til de andre stateful klienter (applets).. Dette betyder også at du IKKE bør oprette en ny Socket hver gang du vil sende noget, meen åbne en forbindelse og lytte på denne for info's. Du kan godt både sende og lytte på samme socket (med input-output streams)



Hejsa, mange tak for din fine indsats.
Men som sagt: Kan det ikke ungåes at bruge import og packages, da jeg synes det er så indviklet?



jeg har ikke problemer med at sende fra min applet, men problemet er bare når den fx sender "1,brugernavn,5,5bil.gif" hvordan kan "Modtager klienten" så vide at den skal gå til klassen "newuser" når de ikke tilhænger hinanden?

Skal de så ikke "UDEN BRUG AF PACKAGES" både være en sender og modtager i begge dele?



Jeg er ikke helt 100 % med på det der med "UDEN BRUG AF PACKAGES".
Hvorfor er det af så stor betydning om tingene er sat i pakker eller ej?
Forskellen er ikke stor, men fordelene ved at bruge pakker er mange og overbevisende.

Det du mangler er designet på arkitekturen i din løsning på problemet.
Skal det laves så applet's sender data ind på en port mod serveren, men læser notificationer på en anden forbindelse mod serveren?
Eller skal en og samme forbindelse(Socket) bruges til at sende data til serveren og modtage date tilbage?

Vil du forsøge at slamkode det hele i en stor fed applet klasse, eller vil du adskille tingene i flere klasser?

Skal der laves indre-klasser, skal nogle ting køre i hver sin tråd på hver enkelt applet eller hvordan skal det hænge sammen?

Step 1:
Prøv at smide din test applet class fil ind i en jar fil, og få det til at fungere med en browser.

Step 2:
Tilføj en klasse mere, en lille test klasse som du bruger fra din applet. Denne klasse samt en recompileret udgave af din applet klasse, samler du en en ny jar fil som erstatter den anden. Du får dette til at fungere i en browser igen.

Step 3:
Du designer din løsning og implementerer den, samler den i en jar og lader applet klassen starte processen.

Så mangler du naturligvis en server, men den går jeg ud fra du ved hvordan du laver og allerede har lavet.



hej.. nu har jeg forsøgt mig en del.
når jeg ser min applet, og en ven kommer ind i min applet, så får jeg intet udskrevet, hvorfor?

En der kan fortælle mig hvad jeg gør forkert?


Fold kodeboks ind/udKode 


for jeg bruger jo out.println("UDSKRIV"); men den viser intet i console.





t