关于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

回到顶部