U mom primjeru koda ne koriste se IP adrese za slanje poruka već samo da se izlistaju aktivni klijenti u listboxu. A dalje za sve se koristi pokazivač peer.
Citat:
tkaranovic: ...Klijen programi koje sam posao nemaju uopšte tidtcpserver komponentu (ima samo tidtcpclient), a server program nema tidtcpclient nego samo tidtcpserver.
Serveru nije potrebna klijent komponenta, no ne razumijem na koji način klijent aplikaciji ne treba server komponenta. Koliko znam, da bi indy tcp klijent mogao čitati nešto mora biti u stanju čekanja, što znači da klijent kada očekuje odgovor (poruku) je zablokiran sve dok ju ne dobije ili dok se ne dogodi timeout, pa tako nije moguće ništa s njim raditi (niti slati druge poruke) dok mu ne stigne odgovor (poruka) od servera? Upravo zbog toga bi se tu trebala nalazi server komponenta koja bi okidala OnExecute event i primala poruke bez obzira na to što trenutno radi klijent komponenta.
Ajd prikaži code ako već nije tajna?
EDIT: Sad sam malo bolje pogledao tvoj primjer, pa i napravio vlastiti klijent da provjerim jednu pretpostavku. Kako mi se čini tvoja klijent aplikacije pošalje poruku server i zatim odmah ode u stanje čitanja jer čeka da joj server vrati tu istu poruku. Na taj način nije potrebna server komponenta. No kvaka je u tome što ovo samo radi ako su server i klijent na istoj ip adresi. I na svojoj slici si pokazao upravo to - dva klijenta na istim ip adresama kao i server. Kada bi server bio na jednoj ip adresi a klijenti na drugim ip adresama onda bi poruku dobio samo onaj klijent koji ju je poslao, a ostali ne bi. Ona bi bila u bufferu i čekala dok ti ostali klijenti ne budu u stanju čekanja (a umjesto toga možda su u stanju slanja druge poruke). Stoga, to po meni ne ide bez server komponente, pa tako niti ovaj tvoj primjer neće raditi na različitim računalima.
No, možda sam fulao pa nisi tako rješio, ali kako mi se čini, jesi, jer bez server komponente klijenti na drugim ip adresama neće uopće znati da išta očekuju na ulazu.
[Ovu poruku je menjao itf dana 22.05.2010. u 13:09 GMT+1]