socket抛出异常

hb1125 2002-11-27 05:22:59
InetSocketAddress isa = new InetSocketAddress(InetAddress.getLocalHost() , 3333);
ServerSocket ss = new ServerSocket();
ss.bind(isa);
ss.setSoTimeout(10000);
Socket s = null;
try
{
while(true)
{
if (ss.isClosed()) break;
s = ss.accept();
pool.execute(new sss(s));//在线程池中操作
}
System.out.println("close socket: " + ss.isClosed());
}
catch(Exception e)
{
e.printStackTrace();
}

我运行这段程序后,等待10秒,就出现了下面错误,请问该怎么办?
java.net.SocketTimeoutException: Accept timed out

at java.net.PlainSocketImpl.socketAccept(Native Method)

at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:344)

at java.net.ServerSocket.implAccept(ServerSocket.java:441)

at java.net.ServerSocket.accept(ServerSocket.java:412)

at com.nearbox.server.ServerSocketWrapper.accept(ServerSocketWrapper.java:44)

at com.nearbox.server.AbstractServerSocket.accept(AbstractServerSocket.java:41)

at com.nearbox.server.sss.main(sss.java:63)
...全文
1528 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
313fxq 2002-11-27
  • 打赏
  • 举报
回复
楼上说的对,JAVA的SOCKET,时间到了以后没有响应的话,会抛出异常的,所以你只要捕获异常就可以了。
远太狼 2002-11-27
  • 打赏
  • 举报
回复
try
{
while(true)
{
if (ss.isClosed()) break;
try{
s = ss.accept();
pool.execute(new sss(s));//在线程池中操作
}catch(SocketTimeoutException e ) {
System.out.println("Socket Accept Timeout");
ss.close();
}
}
System.out.println("close socket: " + ss.isClosed());
}
catch(Exception e)
{
e.printStackTrace();
}
hb1125 2002-11-27
  • 打赏
  • 举报
回复
注解掉是没有问题了,但是我希望ServerSocket在一定时间内没有连接就关闭。
chrischen79 2002-11-27
  • 打赏
  • 举报
回复
ss.setSoTimeout(10000);
这行注释掉再试一下

62,614

社区成员

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

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