首页 > 关于socket 服务端的 while循环 报错 求大神帮忙看看代码和错误信息

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

【热门文章】
【热门文章】