黑马程序员技术交流社区

标题: BuferedReader异常 [打印本页]

作者: 横溢天使    时间: 2015-9-5 08:27
标题: BuferedReader异常
不知道这是怎么回事,请大神帮忙看看
  1. /*
  2. 在自己的机子上测试UDP的收发功能,但是不知道为什么receive端不可以一直接受send端的代码,只接受一次
  3. */
  4. import java.net.*;
  5. class Send
  6. {
  7.         public static void main(String[] args) throws Exception
  8.         {
  9.                
  10.                 DatagramSocket ds=new DatagramSocket(8888);
  11.                 byte[] buf="abcdef".getBytes();
  12.                 DatagramPacket dp=new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.1.101"),10002);
  13.                 ds.send(dp);
  14.                 ds.close();
  15.                
  16.         }
  17. }
  18. class Receive
  19. {
  20.         public static void main(String[] args) throws Exception
  21.         {
  22.                 DatagramSocket ds=new DatagramSocket(10002);
  23.                 while(true)
  24.                 {
  25.                         byte[] buf=new byte[1024];
  26.                         DatagramPacket dp=new DatagramPacket(buf,buf.length);
  27.                         ds.receive(dp);
  28.                         String ip=dp.getAddress().getHostAddress();
  29.                         String data=new String(dp.getData(),0,dp.getLength());
  30.                         System.out.println(ip+"*******"+data);
  31.                 }
  32.         }
  33. }       
复制代码
异常不知道为什么一直处理不了,这段代码也不知道为什么收端仅仅接受一次发端的代码

QQ截图20150904185910.png (77.8 KB, 下载次数: 122)

QQ截图20150904185910.png

作者: heima_huang    时间: 2015-9-5 08:27
上面的代码,经测试,收端可以多次接收啊。
我只把代码中的IP地址改成我的IP,其它都没动,你再试试吧。

re.JPG (160.91 KB, 下载次数: 74)

re.JPG

作者: liuch111    时间: 2015-9-5 09:43
你只发送一次
接受端当然只接受一次

你代码运行没问题, 你为什么会报错..
还有你的 ip.java 是什么

作者: heima_huang    时间: 2015-9-5 10:04
本帖最后由 heima_huang 于 2015-9-5 10:06 编辑

首先明确两点:

一、javac编译时,使用到某个类时,去哪找这个类呢?按Classpath环境变量的指引搜索,它会先在Classpath指定的第一个搜索位置下找,看是不是有相应的class文件,如果有就用,如果没有就在这个位置找是不是有相应的.java文件,如果有,编译并使用。如果.java文件也没有,那么去Classpath设置的第二个位置搜索。
二、Classpath环境变量的第一个搜索位置通常是当前目录,就是那个".;"点分号。

明确了这两点,问题就很明白了,
在你的当前目录下,一定有一个BufferedReader.java文件,javac编译中遇到下面这一行代码时:

    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

就要用到BufferedReader类了,如上所述,在你有当前目录下找到了BufferedReader.java,于是就编译并使用它,可是编译后发现这个.java文件中不包含类BufferedReader,于是编译就失败了。

解决办法就是:你当前目录下没有BufferedReader.java文件,javac就能在java类库中找到BufferedReader类。

本人经过多次测试,成功复现了这个错误提示:


br.jpg (54.79 KB, 下载次数: 177)

br.jpg

作者: 横溢天使    时间: 2015-9-5 10:20
liuch111 发表于 2015-9-5 09:43
你只发送一次
接受端当然只接受一次

ip.java是一个文件名。
上边的代码怎么改才可以实现每次敲回车,接收端每次都就可以收到信息呢?
作者: 横溢天使    时间: 2015-9-5 10:34
heima_huang 发表于 2015-9-5 10:19
上面的代码,经测试,收端可以多次接收啊。
我只把代码中的IP地址改成我的IP,其它都没动,你再试试吧。 ...

嗯,可是在我的电脑上确实不能像你那样显示,我也不知道为什么
作者: heima_huang    时间: 2015-9-5 10:40
横溢天使 发表于 2015-9-5 10:34
嗯,可是在我的电脑上确实不能像你那样显示,我也不知道为什么

我给你回答的关于类的问题,你试了吗?问题解决了吗?
作者: 肖天长    时间: 2015-9-5 10:41
只接收了一次数据然后接收端还一直开着
作者: heima_huang    时间: 2015-9-5 10:48
heima_huang 发表于 2015-9-5 10:40
我给你回答的关于类的问题,你试了吗?问题解决了吗?

收端仅仅接受一次的问题,你的代码应该是没有问题的。
你可以在ds.send(dp);语句后边加一个输出语句:
System.out.println("Sent");
确定一下,你的信息每次都发出去了吗?
作者: 横溢天使    时间: 2015-9-5 10:55
heima_huang 发表于 2015-9-5 10:48
收端仅仅接受一次的问题,你的代码应该是没有问题的。
你可以在ds.send(dp);语句后边加一个输出语句:
Sys ...

发出去了,问题成功解决,非常感谢{:2_32:}
作者: heima_huang    时间: 2015-9-5 11:03
横溢天使 发表于 2015-9-5 10:55
发出去了,问题成功解决,非常感谢

求悬赏,为了入学,你懂得{:2_30:}
作者: 横溢天使    时间: 2015-9-5 11:05
heima_huang 发表于 2015-9-5 11:03
求悬赏,为了入学,你懂得

你什么时候入学啊?
作者: heima_huang    时间: 2015-9-5 11:07
横溢天使 发表于 2015-9-5 11:05
你什么时候入学啊?

哎呀,正在申请9月16号的课程,技术分远远不够呀~着急呀
作者: boboyuwu    时间: 2015-9-5 22:11
heima_huang 发表于 2015-9-5 11:07
哎呀,正在申请9月16号的课程,技术分远远不够呀~着急呀

哥给你哥分多
作者: 放飞邹莺    时间: 2015-9-7 09:23
后付费的就需要的多了啊
作者: MyromaticOfJava    时间: 2015-9-7 21:18
发帖,回帖,每天签到,攒技术分就可以!
作者: 孔子骑黑马    时间: 2015-9-7 22:33
加油!!!!!
作者: 残影    时间: 2015-9-7 23:01
提示路径错了 呢,classpath看看呢。

作者: lizhichao    时间: 2015-9-8 16:16
本帖最后由 lizhichao 于 2015-9-8 16:21 编辑

重新看一遍那个定义把
作者: xinchi    时间: 2015-9-10 10:55
代码是没问题的,可能是你编译的不是这个文件,建议把文件存到其它地方再编译运行
作者: bowenfei    时间: 2015-9-11 23:33
来学习的。。
作者: Java_EE    时间: 2015-9-12 10:02
顶一个,,
作者: Surprise    时间: 2015-9-13 13:17
我并没有在源码中看到有BufferedReader,还有即使写了,一定记得导入io包,我也经常犯这种错误的!!!
作者: Surprise    时间: 2015-9-13 13:20
又想了想,代码是没问题的,那就肯定是输文件名的时候输错了,自己再仔细瞧瞧
作者: 冰霜之卅    时间: 2015-9-21 17:28
BufferedRead是IO包里的
你的代码里就没有System.in

   你明明发送的是"abcdef"
所以很可能你把两节课的练习 搞混了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2