[ erno @ 15.12.2006. 08:54 ] @
zdravo,

par savjeta bi mi super doslo. trebao bih napisati jedan server koji mi sluzi za chat, ali i za igranje nekih glupih igri poput tictactoe ili glupost sa skarama, kamenom i papirom. moj dio je uraditi server koji ce dakle primati konekcije klijenata i naravno obradijvati njihove requests. ja sam to ovako uradio: moj server ima hashtable konekcija i imena korisnika (svaki klijent mora unijeti svoje ime prije konekcije). u svom dijalogu/prozoru kako god, imam textbox gdje mi pise kad se neko konektuje itd itd itd. kad hocu nekog da pozovem na chat ukucam [ime_usera] test i saljem to serveru, server dobije ovaj string i nadje u hashmapi usera sa imenom ime_usera i njemu proslijedi dalje moju poruku i sl. postojili neki performantniji (ljepsi) nacin da se ovo odradi. neki primjer mozda ne bi bio los. thnx.

poz
[ Java Beograd @ 15.12.2006. 12:27 ] @
Tipičan primer. Tu se nauči mrežno programiranje, (sockets), nauče se niti (threads) i još GUI. Milina ! Ja sam to prošao, (odavno). Kasnije sam video gomilu primera na net-u, ali moje malo parče koda i veliko znanje koje sam stekao sopstvenim razvojem je nezamenljivo !

Prijavi se (učlani) na nekoliko developerskih sajtova. Na primer codeproject, javaguru ili slično. Naćićeš sve šta ti treba.
[ Java Beograd @ 16.12.2006. 18:51 ] @
Evo, našao sam svoje primere od pre 6 (!) godina. ( Jebiga, stari se ! ). Onaj server.exe je dobijen Microsft-ovim J++ alatom. Pogledaj, ima tu svačega.
[ SluX @ 19.12.2006. 23:27 ] @
Mozda sam malo okasnio...
Koliko kapiram ti imas po jedan thread za svakog usera?Ili ne?

U svakom slucaju, pogledaj kako radi nio i zasto je bolje koristiti asinhroni io od blokirajuceg....

Nadam se da je malo pomoglo...ako ne, pitaj jos...
[ Brain raider @ 21.12.2006. 19:38 ] @
Moze li neko iskusniji da objasni kako u stvari funkcionise chat
[ djalfirevic @ 21.12.2006. 21:25 ] @
Citat:
Brain raider: Moze li neko iskusniji da objasni kako u stvari funkcionise chat


Do kog nivoa mislis kako funkcionise chat?
Jel kontas stvari vezane za portove, tj. sockete?

Ako ti je to jasno, sustina se svodi na konkurentnost, u smislu, da svaki klijent za server predstavlja jednu dodatnu nit koju on opsluzuje. Otuda cuveni pojam visenitnost. Server i klijent moraju da uspostave komunikaciju i to se radi po principu 'osluskivanja'. Da li si nekada u mrezi koristio naredbu 'ping'? Salje se naredba radnim stanicama a one ukoliko logicka veza izmedju njih postoji, salju echo signal, i na taj nacin se uspostavlja veza. Zatim se, poruke koje se salju transformisu, do nivoa nestrukturiranih bita, dok se na prijemnoj strani one rekonstruisu.

Naravno, mrezni protokoli su takvi da svaki radi svoj deo posla i na taj nacin se stvara paralelno procesiranje. Physical Layer prakticno vrsi prenos nestrukturiranih bita, DataLink Layer nestrukturirane bite grupise u pakete (frames). Transport Layer ima zadatak da pronadje putanju od izvorisnog do odredisnog racunara, putem rutiranja, dok Application Layer prakticno predstavlja sam vrh piramide i on u sustini pruza servise za aplikacione programe kako bi omogucio komunikaciju sa drugim aplikacionim programima u okviru racunarske mreze (odredjuje protokol za komunikaciju, proverava da li postoje osnovni komunikacioni resursi, stvara dogovor izmedju strana u komunikaciji po pitanju integriteta poruka i privatnosti, i sl).

Nadam se da sam ti bar malo pojasnio?
[ glock @ 21.12.2006. 23:01 ] @
Joj Djuro stari nemoj da se ljutis ali ala znas da pametujes brate, svaki tvoj post je pun neke
ufuranosti, "vidte mene znam nesto sto nema nikakve veze sa temom".

@ chat

napravish java.net.ServerSocket i pozoves njegoc accept() metod, i onda za
svaku klijentovu konekciju bacis novi tred kome predajes java.net.Socket instancu.

Ukoliko hoces da ti resenje bude vise manje profinjeno, pogledaj u Tiger-u (Java 1.5)
java.util.concurrent.Future, java.util.concurrent.Callable, i ostale povezane klase, mnogo
dobra stvar.
[ SluX @ 22.12.2006. 19:15 ] @
Hehe...malo pretera sa pricom o internetovim layerima stvarno ;)

U svakom slucaju ako bas hoces da ides do kraja sa dobrom applikacijom, pogledaj asinhroni io(nio paket ga ima). Omogucice ti da tvoj server prima mnooogo vise klijenata nego standardni(i doduse laksi za implementaciju) server sa po jednom niti po klijentu...
[ djalfirevic @ 22.12.2006. 21:36 ] @
Citat:
SluX: Hehe...malo pretera sa pricom o internetovim layerima stvarno ;)

U svakom slucaju ako bas hoces da ides do kraja sa dobrom applikacijom, pogledaj asinhroni io(nio paket ga ima). Omogucice ti da tvoj server prima mnooogo vise klijenata nego standardni(i doduse laksi za implementaciju) server sa po jednom niti po klijentu...


Ne ljutim se bre, ali kada neko postavi pitanje da li neko zna kako funkcionise chat, kako ti uopste mozes da pretpostavis sta konkretno tog nekog zanima?

Nije covek pitao kako funkcionise Java chat, vec chat uopste, a to definitivno podrazumeva Layer-e, ok?
[ SluX @ 23.12.2006. 10:21 ] @
Stoji to sto ti kazes, ali se opet ne bih slozio sa tobom. Ako cemo vec tako za aplikacionog programera uopste nije bitan ni jedan drugi sloj sem aplikativnog i, ako vec ne koristis neku message orijentisanu biblioteku, transportni sloj-prica o drugim slojevima je nebitna(ovo ne zelim da generalizujem, ali govorim iz svog i iskustva mojih kolega), jer ti kao application layer programer nemas potrebe da se tu petljas na bilo kakav nacin, a uostalom to ti je i onemoguceno ;)

Nego da se vise ne polemise oko ovoga...svi imaju svoj pristup, tako da ja ne tvrdim da sam apsolutno u pravu-ja sam pobornik onog lenjog stava: sto ti ne treba, ne moras da znas.

Poz.
[ djalfirevic @ 23.12.2006. 17:06 ] @
Citat:
SluX:

Nego da se vise ne polemise oko ovoga...svi imaju svoj pristup, tako da ja ne tvrdim da sam apsolutno u pravu-ja sam pobornik onog lenjog stava: sto ti ne treba, ne moras da znas.

Poz.


OK. Slazem se.