学习困难求大神帮助

weixin_39195667 2018-03-07 03:48:10
public class ChatReceive extends Thread {

@Override
public void run() {
try {
//建立udp的服务,要监听一个端口
DatagramSocket socket = new DatagramSocket(9090);
//准备空的数据包存储数据
byte[] buf = new byte[1024];
DatagramPacket packet = new DatagramPacket(buf, buf.length);
boolean flag = true;
while(flag){
socket.receive(packet);
// packet.getAddress() 获取对方数据 包的IP地址对象。
System.out.println(packet.getAddress().getHostAddress()+"说:"+new String(buf,0,packet.getLength()));
}
//关闭资源
socket.close();


}catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}


}

}为什么关闭资源时候需要声明一个boolean变量,把while条件改成true不行吗…public class ChatReceive extends Thread {

...全文
402 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiongdejun 2018-03-07
  • 打赏
  • 举报
回复
你这不完整啊 boolean flag = true; while(flag){ socket.receive(packet); // packet.getAddress() 获取对方数据 包的IP地址对象。 System.out.println(packet.getAddress().getHostAddress()+"说:"+new String(buf,0,packet.getLength())); } //关闭资源 socket.close(); }catch (IOException e) { flag=false; // TODO Auto-generated catch block e.printStackTrace(); }//是为了报错,发生意外退出循环的,直接换成true会死循环
自由自在_Yu 2018-03-07
  • 打赏
  • 举报
回复
这里的boolean flag设置可以直接换成while(true) flag一般是用来终止while循环的 比如:
boolean flag = true;
        int n = 0;
        while(flag){
        	n++;
        	if(n > 10){
        		flag = false;
        	}
        }

50,527

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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