• 手机版

    扫码体验手机版

  • 微信公众号

    扫码关注公众号

国内首家协议开发

软芯音视解码保护平台

在线
客服

发布
需求

在线
聊天

天盟
APP

天盟APP下载

关注
微信

微信扫一扫访问
顶部

Android udpserver不断接收数据信息问题

通过udpserver循环接收客户端发来的数据,将所有的数据显示在界面我这边就通过while循环在线程中接收数据,然后通过handler将数据显示在主界面上!可是为什么有时候会卡死!
   public class UDPServer implements Runnable {
        private byte[] msg = new byte[1024];
        private boolean life = true;
        private DatagramSocket dSocket = null;
        public UDPServer() {
            try {
                dSocket = new DatagramSocket(17009);
            } catch (SocketException e) {
                e.printStackTrace();
            }
        }
        /**
         * @return the life
         */
        public boolean isServer() {
            return life;
        }
        /**
         * @param lifes the life to set
         */
        public void setServer(boolean lifes) {
            this.life = lifes;
            LogUtil.e("dSocket.isClosed()show==");
            if (life == false && dSocket != null) {
                              if (!dSocket.isClosed()) {
                    dSocket.close();
                }
                dSocket.disconnect();
              //                dSocket = null;
            }
        }
        @Override
        public void run() {
            DatagramPacket dPacket = new DatagramPacket(msg, msg.length);
                     while (life) {
                try {
                    Thread.sleep(5);
                    if (dSocket != null) {
  dSocket.receive(dPacket);
                                    String datas = ByteUtil.byte2HexStr(dPacket.getData(), dPacket.getLength());
                                            //将收到的消息发给主界面
                                              if (dPacket.getAddress() != null) {
                            Message message = new Message();
                            message.obj = dPacket.getAddress() + "--" + datas;
                            message.what = 2;
                            myHandler.sendMessage(message);
                        }
                    } else {
                        life = false;
                    }
                } catch (IOException e) {
                    life = false;
                    if (dSocket != null) {
                        if (!dSocket.isClosed()) {
                            dSocket.close();
                        }
                        dSocket.disconnect();
                    }
                } catch (InterruptedException e) {
                    life = false;
                    if (dSocket != null) {
                        if (!dSocket.isClosed()) {
                            dSocket.close();
                        }
                        dSocket.disconnect();
                    }
                }
            }
        }
    }

免责声明:本内容仅代表回答会员见解不代表天盟观点,请谨慎对待。

版权声明:作者保留权利,不代表天盟立场。

使用道具 举报

发新帖

发布任务需求已有1031168位用户正在使用天盟网服务

发布分类: *
任务预算: *
需求内容: *
手机号码: *
任务商家报价为
  • 预算价 :
  • 成交价 :
  • 完工期 :
  • 质保期 :

* 最终任务项目以服务商报价、双方协商为准!