我写了个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?
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?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货