A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 ☆星痕泪 于 2013-11-6 19:11 编辑

我Send继承复写run方法里,当socket 的对象 调用send方法把Packet数据包发送出去,毕老师是在while循环外关闭流。我先没想这个 ,就在catch后加了finally,在这finally里面关闭流,最后导致我在doc里写“886”等结束时没法预料那样关闭,想请高手详细解释一下,灰常感谢!

  1. <P>public void run()
  2.         {
  3.                 try
  4.                 {
  5.                         BufferedReader br =
  6.                                 new BufferedReader(new InputStreamReader(System.in));
  7.                         
  8.                         String line = null;
  9.                         while ((line = br.readLine())!=null)
  10.                         {
  11.                                 if("baibai".equals(line))
  12.                                         break;

  13.                                 byte[] buy = line.getBytes();
  14.                                 DatagramPacket dp =
  15.                                         new DatagramPacket(buy,buy.length,InetAddress.getByName("192.168.0.255"),10001);

  16.                                 ds.send(dp);
  17.                         }
  18.                         
  19.                 }
  20.                 catch (Exception e)
  21.                 {
  22.                         throw new RuntimeException("数据发送异常");
  23.                 }
  24.                 finally
  25.                 {
  26.                         ds.close();
  27.                 }</P>
  28. <P>//补充:程序本身能够运行,我就是像知道有finally和没你finally的区别,在这里。</P>
复制代码

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1

查看全部评分

6 个回复

倒序浏览
是不是你的ip地址设置的不对导致接收不到信息?
回复 使用道具 举报
胡志翔 发表于 2013-11-5 23:23
是不是你的ip地址设置的不对导致接收不到信息?

我测试过了,可以通过,就输入“baibai”这样的关闭没反应。程序关不了。一直阻塞。
回复 使用道具 举报
☆星痕泪 发表于 2013-11-5 23:28
我测试过了,可以通过,就输入“baibai”这样的关闭没反应。程序关不了。一直阻塞。 ...

有finally时其中的关闭资源的代码一定被读到,资源无论如何都会关闭。
没有finally时如果出现异常,程序会挂掉,关闭资源的代码读不到,资源不会关闭。

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1

查看全部评分

回复 使用道具 举报
如果问题已经解决,请及时修改主题为“提问结束”。
回复 使用道具 举报
不知道你是不是没有将 baibai 写成单独的一行?readLine是每次读取一行的数据。
回复 使用道具 举报
黄炳期 发表于 2013-11-6 08:53
如果问题已经解决,请及时修改主题为“提问结束”。

不好意思,晚上题的问,现在下班刚回来
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马