一个关于终结循环的问题
我写了个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?
------解决方案--------------------
要终止while循环,只需要在while最后的地方break或者设置flag=false就可以了,但估计LZ的本意应该不是这样,是想让主线程不被阻塞吧,这个本来就是阻塞式的,如果不想让主线程阻塞等待,可以交给一个线程去处理,主线程继续执行别的
------解决方案--------------------不是要中止循环,而是要多开一个线程啊。
------解决方案--------------------楼主可以指定一个输入的字符串,标识输入结束,当输入碰到这个字符串你就break就好了