我写了个client  里面有循环等待接受server的信息 代码如下:public class multicastClinet{
    public static void main(String[] args) throws Exception{
        //输入port
         System.out.println("Enter your port number :");
     Scanner sc1 = new Scanner(System.in);
     String port = sc1.nextLine();
     //选择签名到服务器上 
     System.out.println("1.subscribe");
         System.out.println("Enter :");
     Scanner sc = new Scanner(System.in);
          int choose = sc.nextInt();
         //如果是1  签名到服务器上
          if(choose == 1){
         //转换格式
         int portc = Integer.parseInt(port);
         //建立udp
         DatagramSocket ds = new DatagramSocket();
         //转换格式
byte[] buf = port.getBytes();
DatagramPacket dp = new DatagramPacket(buf,buf.length,InetAddress.getByName("127.0.0.1"),40621);
         //发送
         ds.send(dp);
         //关闭
         ds.close();
        
         //再建一个udp
         DatagramSocket ds1 = new DatagramSocket(portc);
         boolean flag = true;
         //循环
         while(flag){
                //此时服务器会定时给签名的客户端发送时间
                byte[] buffer = new byte[1024];          
                DatagramPacket dp1 = new DatagramPacket(buffer,buffer.length);
                System.out.println("Waiting for receive .");
                ds1.receive(dp1);
   }
}我的问题是如何能终止这个while循环?  receive每次都会把程序卡在那等待数据,有没有办法能在卡住的同时停止掉loop?

解决方案 »

  1.   

    要终止while循环,只需要在while最后的地方break或者设置flag=false就可以了,但估计LZ的本意应该不是这样,是想让主线程不被阻塞吧,这个本来就是阻塞式的,如果不想让主线程阻塞等待,可以交给一个线程去处理,主线程继续执行别的
      

  2.   

    楼主可以指定一个输入的字符串,标识输入结束,当输入碰到这个字符串你就break就好了