怎么在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);
}

...全文
120 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用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;
}
Java 网络编程 说明: 网络编程,分为两种一种是TCP、另一种是UDP方式。我们分别写一下TCP、UDP端的Server和Client简单演示代码。 TCP: Sever import java.io.DataInputStream; import java.io.IOException; import java.io.InputStream; import java.net.ServerSocket; import java.net.Socket; public class TCPServer { public static void main(String[] args) { try { ServerSocket socket = new ServerSocket(4444); while (true) { Socket sc =socket.accept(); InputStream instr = sc.getInputStream(); DataInputStream dataInputStream = new DataInputStream(instr); System.out.println(dataInputStream.readUTF()); } } catch (IOException e) { e.printStackTrace(); } } } Client import java.io.DataOutputStream; import java.io.IOException; import java.io.OutputStream; import java.net.Socket; import java.net.UnknownHostException; public class TCPClient { public static void main(String[] args) { try { Socket socket = new Socket("127.0.0.1",4444); OutputStream oStream = socket.getOutputStream(); DataOutputStream dataOutputStream = new DataOutputStream(oStream); dataOutputStream.writeUTF("Hello"); } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } UDP: Server: import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.SocketException; public class UDPServer { public static void main(String[] args) { try { byte [] buffer = new byte[1024]; DatagramSocket socket = new DatagramSocket(4444); DatagramPacket packet = new DatagramPacket(buffer, buffer.length); while(true){ socket.receive(packet); System.out.println(new String(buffer,0,packet.getLength())); } } catch (SocketException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } Client import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetSocketAddress; import java.net.SocketException; public class UDPClient { public static void main(String[] args) { byte [] buffer = null; buffer = new String("hello").getBytes(); DatagramPacket packet=null; try { packet = new DatagramPacket(buffer, buffer.length,new InetSocketAddress("127.0.0.1", 4444)); DatagramSocket socket = new DatagramSocket(1234); socket.send(packet); socket.close(); } catch (SocketException e1) { e1.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }

62,634

社区成员

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

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