Čaute,
potrebujem nejakú radu ako pomocou socketov spraviť jednoduchý IM. Na server použijem externý program. Nejde mi vôbec ani o ten samotný IM (lebo na nete je kopec tutoriálov s GUI) ale o ten princíp ako docieliť toho, že keď klient pošle správu, aby potom mohol server (alebo zase klient) poslať viac ako jednu správu. Neviem ani za toho prísť na tú konštrukciu v programe aby proste nečakal na odpoveď druhej strany ale aby mohol poslať ďalšiu správu.
C: bla
S: bla
C: blabla
C: bla (druhá správa po sebe) tu mi to chybuje, lebo na serveri sa to nezobrazí pokým neodpovie na predchádzajúcu
Zrejme je to tým, že na stdin aj inputStream používam bufferedReader. Preto by som uvítal radu typu: použi tamto alebo hento. A mech sa bavíme konkrétne tak tu je telo main.
Java: socket
Re: Java: socket
Musíš prijímať všetko, čo príde od klienta, nezávisle od odosielania. Bežný postup je vytvorenie osobitného threadu (vlákna) pre prijímanie správ. Odosielať potom môžeš vždy, keď užívateľ zadá vstup - nejakú správu.
Jedno nepekné ale funkčné riešenie je zachovať aktuálny postup s tým, že budeš mať nejaký zoznam správ na odoslanie a nejaký zoznam správ na prijímanie, a jeden loop, ktorý ich bude vyprázdňovať (vždy sa všetko odošle a všetko prijme). Ale to je skôr pre programy, v ktorých máš ty sám na starosti beh celej aplikácie aj s GUI, ako napr. vo WinAPI, a sockety sú neblokujúce. V Java frameworkoch by si takéto niečo mohol zapracovať do nejakého timeru.
Jedno nepekné ale funkčné riešenie je zachovať aktuálny postup s tým, že budeš mať nejaký zoznam správ na odoslanie a nejaký zoznam správ na prijímanie, a jeden loop, ktorý ich bude vyprázdňovať (vždy sa všetko odošle a všetko prijme). Ale to je skôr pre programy, v ktorých máš ty sám na starosti beh celej aplikácie aj s GUI, ako napr. vo WinAPI, a sockety sú neblokujúce. V Java frameworkoch by si takéto niečo mohol zapracovať do nejakého timeru.
Re: Java: socket
hm, čakal som, že sa to bude dať spraviť bez multithreading a nejakým jednoduchým spôsobom, ktorý som nevidel. Každopádne díky za info 