Citat:
milos 2: koliko sam ja shvatio po ovom programu sto je za samo izmedju dva racunara, trebalo bi da nisu stalno konektovani, jer u kodu imas onaj deo:
Code:
AThread->Connection->Disconnect();
i svaki put kada pritisnes dugme da posalje poruku, on se opet konektuje.
To je nekakva praksa klijent-server komunikacije tj. da klijent pošalje zahtjev, drži konekciju aktivnom dok server ne zaprimi zahtjev i dok ne dobije odgovor od njega (ukoliko je potrebno). Nakon toga prekida konekciju i oslobađa mrežne resurse. Vrlo čest primjer s bazama. No, može se napraviti i da je stalna konekcija. Više možda stvar ukusa, iako ja više preferiram konekciju u vrijeme zahtjeva.
Citat:
kosmopolita: Kako bi onda server znao ko su sve klijenti?
Imao bi spisak ip adresa na kojima su klijenti?
Centralni server bi prikupljao podatke o svima koji chataju na sljedeći način:
Klijent upali chat aplikaciju i logira se na centralni server. Tada taj server zapravo zapiše sve potrebne podatke tj. IP adresu, port i npr. njegov nick.
Citat:
milos 2: dobro pitanje. :)
kako onda isprogramirati server?
recimo u mom slucaju sa 16 racunara. jedan uzmemo za server, i kako da programiram idUDPServer komponentu (posto si rekao da moze samo preko UDP porta da se komunicira sa vise od dva racunara), ili se pak uzima neka druga komponenta.
..i onda nakon što se klijent prijavio na centralni server prilikom slanja poruke server će znati od koga je poruka (po ip adresi koja je prethodno prijavljena kad se klijent logirao), te će tu poruku kroz for petlju poslati svim ostalim ip adresama koje su kod njega prijavljene. Tako će zapravo jedna poruka upućena na centralni server biti proslijeđena svima koji su na taj server prijavljeni (logirani).
Možda malo zvuči komplicirano no ne vjerujem da je preveliki problem za shvatiti. Također, ne mora nužno biti UDP. Može i TCP. UDP je više pogodan ako je riječ o lokalnoj mreži pa preko broadcasta svatko tko chata zapravo "glumi" centralni server.