"Flemming K. Jensen" wrote:
>
> Jeg har set denne forklaring før, men aldrig helt forstået den - og
> ikke lige haft lejlighed til at afprøve den, siden jeg først hørte om
> den.
>
> Så vidt jeg har kunnet læse mig til betyder SoTimeout blot at
> read-metoden timeouter med en InterruptedIOException.
> Hvordan kan man skelne mellem om dette skyldes at der ikke er nogen
> data at læse, (hvilket ofte kan være tilfældet) og om TCP-forbindelsen
> er gået "død"? (det sidste er det der interesserer mig)
InterruptedIOException smides kun hvis read() har blokeret i
<SO_TIMEOUT> millisekunder. Hvis noget andet går galt smides en
IOException. Bemærk, at InterruptedIOException nedarver fra IOException,
så du skal catch'e InterruptedIOException først.
try
{
int x = inputstream.read();
if(x == -1)
{
// End of stream
}
}
catch(InterruptedIOException iioe)
{
// Timeout waiting for data
}
catch(IOException ioe)
{
// An error occured
}
--
CAPUT A/S Morten Jensen Phone +45 70 12 24 42
Nygade 6 Senior Developer Fax +45 70 11 24 42
DK-1164 Kbh K jensen@caput.com
http://www.caput.com