[Java lista] net
Schmidt András
asch at freemail.hu
2008. Sze. 8., H, 17:42:07 CEST
Hi!
Már volt erről szó ezen a listán is, nézd meg az archívumot szerintem.
A konklúzió röviden az volt, hogy sehogy nem lehet automatikusan
érzékelni a leszakadást. Mivel maga az érzékelés is hálózati forgalommal
járna, nincs alapból beépítve. Neked kell implementálni hogy legalább
egy irányból, de inkább mindkettőből menjen időnként "I am alive" üzenet
és ha ezek egy ideig nem jönnek meg, akkor zárd le a kapcsolatot!
A socketet olvasó szál mindaddig blokkolódik, amíg nem jön adat, vagy
egy másik szálról le nem zárod a kapcsolatot. Tehát ki lehet zökkenteni
az olvasó szálat is, ráadásul egyből exceptiönt fog dobni.
Non Blocking IO-val (5-ös Java óta van, azt hiszem) elvileg nem kell
több szálat nyitni, de a leszakadás érzékelést ott is magadnak kell
heartbeat-tel és timeout-tal megoldani.
Üdv
Schmidt András
Laja wrote:
> Hi!
>
> Kérdésem röviden, hogyan tudom detektálni, hogy egy TCP kapcsolat megszakad?
>
> Bővebben:
> Van egy progim (kliens), ami kommunikál TCP-n egy másik progival.
>
> Socket soc = new Socket(host, port);
> soc.setSoTimeout(30000);
> soc.setSoLinger(true, 30);
>
> BufferedReader chis=new BufferedReader(
> new InputStreamReader(soc.getInputStream())
> );
> PrintWriter chos=new PrintWriter(soc.getOutputStream());
>
> chos.println("MUKOGY\n");
> chos.flush();
>
>
> //Megvárjuk a választ.
> String valasz = chis.readLine();
>
> chis.close();
> chos.close();
> soc.close();
>
> A gond az, hogy ez csak akkor jó, ha a kapcsolatfelvételben vagy azelőtt
> van hiba. Ha már felépült a kapcsolat (másik oldalon volt accept()),
> akkor ha a másik oldalon egyszerűen kilövöm a szervert, akkor a kliens
> végtelenségig vár a chis.readln() paranccsal, hogy majdcsak egyszer
> válaszol a szerver. Hogyan tudok erre valami timeout-ot adni, vagy
> figyelni hogy a kapcsolat él-e még?
> Tudom, RTFM, de én csak a setSoTime és setSoLinger-t találtam, de azok
> ezen nem segítettek.
>
> Köszi előre is!
>
> Laja
>
> _______________________________________________
> Javalist mailing list
> Javalist at javagrund.hu
> http://javagrund.hu/mailman/listinfo/javalist
>
>
>
További információk a(z) Javalist levelezőlistáról