Socket设置超时 问题

xiazdong 2011-08-23 10:11:29
我在看core java网络编程那章的时候有一个设置套接字超时s.setSoTimeOut()函数,他说如果超时会抛出SocketTimeoutException,但是我try catch后却捕获不到异常,但是用Exception却能捕获到异常
这是为什么。。。


import java.net.*;
import java.io.*;
import java.util.*;
public class TimeoutServerTest {

public static void main(String[] args) {
try{
ServerSocket server = new ServerSocket(8888);
Socket s = server.accept();
s.setSoTimeout(5000);
Scanner in = new Scanner(s.getInputStream());
String line = in.nextLine();
System.out.println(line);
}catch(SocketTimeoutException e){

System.out.println("连接超时1");

}
catch(Exception e ){
System.out.println("连接超时2");

}
}
}
...全文
171 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
huqifei 2011-08-24
  • 打赏
  • 举报
回复
setSoTimeout是设置读超时,连接超时、读超时都可以使用SocketTimeoutException 捕获。
楼主检查下客户端是否没有发送消息,直接断连了? 断连是IOException
Fly_m 2011-08-23
  • 打赏
  • 举报
回复
你打印一个e.getClass 看是否是sockettimeoutException,可能它抛出的不是timeoutException.

62,612

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧