关于socket 服务端的 while循环 报错 求大神帮忙看看代码和错误信息
new Thread(){
public void run(){ try {
Log.i("TService", "================>SHIT");
service=new DatagramSocket(PORT);
mExecutorService = Executors.newCachedThreadPool(); //创建线程池
Log.i("TService", "=================>PLEASE");
Socket client = null;
while(true){
mList.add(client);
Log.i("TService", "===================>llll");
new Service();
//mExecutorService.execute(new Service());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}.start();
Log.i("TService", "建立");
super.onCreate();
}
class Service implements Runnable{
public Service(){
byte data [] = new byte[1024];
DatagramPacket packet =new DatagramPacket(data,data.length);
try {
service.receive(packet);
Log.i("TService", "================>pppppppp");
msg=new String(packet.getData(),packet.getOffset(),packet.getLength());
Log.i("TService", "=============>ooooo");
String stri="copy that";
byte data3[]=stri.getBytes();
DatagramPacket output=new DatagramPacket(data3, data3.length, packet.getSocketAddress());
service.send(output);
service.close();
} catch (Exception e) {
e.printStackTrace();
}
}
这个是代码和错误信息 我写了个客户端广播了个信息 只有第一次打印出来了======>pppp和=======>ooooo后面好像都在while中循环 这个怎么跳出来啊 需要判断什么吗 求大神帮忙看看 提点我一下 小弟十分感谢 谢谢~~~~!!!
回答:
题主本意是否是想让Service多运行几次好观察程序执行情况?明显题主的代码无法达到目的,service被close掉了,自然再多循环也没用。另外,题主的 while循环是个死循环,假设题主想循环五次收发活动,可以这么写
int count = 5;while (count-- > 0) {
...
new Service();
...
}
service.close();
把 close放到 while循环外边。
回答:
你第一次使用了DatagramSocket后就把它close了啊,后面循环当然用不了它了
你要收一次就跳出的话,可以这样:
private boolean flag = true;while(flag){
...
new Service()
...
}
Service里调用close()
后将flag设为false。
以上是 关于socket 服务端的 while循环 报错 求大神帮忙看看代码和错误信息 的全部内容, 来源链接: utcz.com/p/176769.html