[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