TCP server + multi-client – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

TCP server + multi-client – Java – Fórum – Programujte.comTCP server + multi-client – Java – Fórum – Programujte.com

 

ingiraxo+15
Grafoman
18. 11. 2012   #1
-
0
-

Cau,

plánuju si zkusit udělat TCP server/client, ale narazil jsem na problém, jak vlastně od klienta stále číst

klient se připoji, server mu odesle zpravu a potom potrebuju, aby klient stale byl pripravenej cist od serveru a to sami na strane serveru

v C# to nemám problém udělat, ale tady nějak nevim jak nastavit po připojení aby se stale od klienta četlo, doku rucně neukončim spojení nebo se klient neodpojí

a to vsechny aby probíhalo asynchronně... celkem se mi příčí vytvářet pro každýho klienta vlákno, sice to je jen takovej test, ale pokud by se pripojilo 1000 klientu, tak ten způsob pomoci co klient to vlakno není nejlepší a mám dojem, že by ani JVM nepojmul tolik vláken na app

vyštoural jsem pár novinek z JDK1.7 jako třeba NIO (AsynchronousServerSocketChannel nebo AsynchronousSocketChannel), ale ten problém kterej jsem tady zminoval nevim jak  vyresit :/

EDIT: chci zkusit takovej chat, kde si uzivatele budou moct posilat zpravy, ukaze to seznam pripojenych apod. (pripadne par prikazu jako kick, ban apod....)

Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
KIIV
~ Moderátor
+43
God of flame
18. 11. 2012   #2
-
0
-

muzes mit treba thread poll a predavat jim jen sockety na kterejch se neco stalo

mimochodem na jeden proces je limit socketu 1024 (vcetne stdin/out/err...)

Nahlásit jako SPAM
IP: 94.112.32.–
Program vždy dělá to co naprogramujete, ne to co chcete...
ingiraxo+15
Grafoman
18. 11. 2012   #3
-
0
-

to se lehko řekne :)

ale i ten ThreadPool nevim jak bych do toho zakomponoval

když se mi připojí klient, tak se začne provádět čtení (async) 

                    socketChannel.read(buffer, buffer, new CompletionHandler<Integer, ByteBuffer>() {
                        @Override
                        public void completed(Integer result, ByteBuffer buffer) {
                            buffer.flip();
                            String msgReceived = Charset.defaultCharset().decode(buffer).toString();
                            System.out.println("Msg: " + msgReceived);
                        }

                        @Override
                        public void failed(Throwable exc, ByteBuffer buffer) {
                        }
                    });

mezitim server nasloucha pro dalsiho klienta.. problem je, ze jakmile odeslu neco serveru z klienta, tak se provede funkce completed a tim to cteni konci.. a ja nevim jak od toho klienta cteni nechal stale jakoby zapnuty

idealni by byl nejakej priklad, protoze vytvarek vlakno pro kazdyho klienta nehodlam

verim ze to bude neco trivialniho, ale nemuzu na to prijit :D

Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
Dano
~ Anonymní uživatel
101 příspěvků
Nahlásit jako SPAM
IP: 78.98.66.–
ingiraxo+15
Grafoman
18. 11. 2012   #5
-
0
-

ne, ale to je to, co nechci - co klient, to vlákno.. hlavně ten kód je skoro 11let starej a ja to spíš chci řešit přes novější nio2, kterej podporuje asyc volání

Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 38 hostů

Podobná vlákna

TCP server, TCP klient v Linuxu — založil kocourOggy

C# TCP multi chat změření doby — založil patrikl123

TCP client — založil omorok

Client-server-client — založil MM

Client/Server — založil silent

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý