怎么在catch到SocketException时把socket给close?

kekan 2003-07-29 09:13:18
代码如下:

try {
DatagramSocket receiveSocket = new DatagramSocket(7878);
receiveSocket.setSoTimeout(7000);
DatagramPacket packetIn = new DatagramPacket(byteIo,508);
receiveSocket.receive(packetIn);
receiveSocket.close();
} catch(SocketTimeoutException ex) {
System.out.println(ex);
//如何在这里将receiveSocket给close掉
} catch(SocketException ex) {
System.out.println(ex);
} catch(IOException ex) {
System.out.println(ex);
}

...全文
112 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
u22 2003-07-30
  • 打赏
  • 举报
回复
那就都关掉??
yoken 2003-07-30
  • 打赏
  • 举报
回复
DatagramSocket receiveSocket = null;
DatagramPacket packetIn = null;
try {
receiveSocket = new DatagramSocket(7878);
receiveSocket.setSoTimeout(7000);
packetIn = new DatagramPacket(byteIo,508);
receiveSocket.receive(packetIn);
} catch(SocketTimeoutException ex) {
System.out.println(ex);
receiveSocket.close();
} catch(SocketException ex) {
System.out.println(ex);
} catch(IOException ex) {
System.out.println(ex);
}
kekan 2003-07-30
  • 打赏
  • 举报
回复
没有用啊,只要receiveSocket不和DatagramSocket receiveSocket = new DatagramSocket(7878)写在同一个try里面,就会产生variable receiveSocket的错误?
phsea 2003-07-30
  • 打赏
  • 举报
回复
finally{
try{
if (socket != null )
socket.close();
socket = null ;
}catch(Exception e){}
}

或者把try代码放到你的exception里面也可
kekan 2003-07-30
  • 打赏
  • 举报
回复
我试过,这样不行,编译时产生variable receiveSocket错误?
这是为什么啊?
u22 2003-07-29
  • 打赏
  • 举报
回复
receiveSocket=null;
或者
finally{
receiveSocket=null;
}

62,614

社区成员

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

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