UDP 服务 建立后 不能连接


public class TncUdpServer implements ITncInterface 
    PORT = 6000;
    private byte[] msg = new byte[2048];
    private boolean life = true;
    private IResponse respListener;
    private int mState;
    private int TcpRecNum,TcpSendNum;
    private WorkThread Workserver;
    private ITncInterface.TncInterface msStype;
    private DatagramSocket dSocket = null;
    private ITncInterface.TncType Tnc_Type;

    public TncUdpServer(IResponse respListener) {
        msStype= ITncInterface.TncInterface.Tnc_Upd ;
        mState = STATE_NONE;
        this.respListener=respListener;
    }

    @Override
    public boolean getState(){
        return mState==STATE_CONNECT_SUCCESS;
    }
    public int getRecNum(){
        return TcpRecNum;
    }
    public int getSendNum(){
        return TcpSendNum;
    }

    @Override
    public void SetStratkey(String _Key){
    }
    @Override
    public void Open() {
        mState = STATE_CONNECT_SUCCESS;// 开启服务器
        ExecutorService exec = Executors.newCachedThreadPool();
        Workserver = new WorkThread();
        exec.execute(Workserver);
        respListener.onSocketConnectSucc(msStype) ;
    }

    @Override
    public void Close() {
        life=false ;
      //  Workserver.stop();
        if (dSocket!=null){
            dSocket.disconnect() ;
            dSocket.close() ;
            dSocket=null;
        }
        new Handler().postDelayed(new Runnable(){
            public void run() {
                //execute the task
            }
        }, 200);
        respListener.onSocketConnectDiss(msStype) ;
        mState = STATE_NONE;
        //setState(STATE_NONE);
    }

   
    @Override
    public void write(String mstring){

    }

    private class WorkThread extends Thread {
        @Override
        public void run() {
           // setName("ConnectThread");
           DatagramPacket dPacket = new DatagramPacket(msg, msg.length);
           try {
               InetAddress msADD;
              // try
              // {
              //     msADD=InetAddress.getByName(NetworkUtil.getLocalHostIp());
              //     dSocket = new DatagramSocket(PORT,msADD );
             //  }
              // catch(UnknownHostException e)
             //  {
              //     respListener.onSocketConnectDiss(msStype);
             //  }
               dSocket = new DatagramSocket(PORT );
               dSocket.setBroadcast(true);
               msADD=dSocket.getLocalAddress();
              // dSocket.setSoTimeout(2000);
               while (life) {
                   try {
                       //this.lock.acquire();
                       dSocket.receive(dPacket);
                      // dPacket.getLength();
                       byte[] target = new byte[dPacket.getLength()];
                       System.arraycopy(dPacket.getData(), 0, target, 0, dPacket.getLength());
                       //result=new String(dPacket.getData());
                       respListener.onSocketResponse(msStype,target);
                       TcpRecNum++;
                   } catch (IOException e) {
                       e.printStackTrace();
                   }
               }
           } catch (SocketException e) {
               Logex.e( "WorkThread: " ,e.getMessage());
           }
            respListener.onSocketConnectDiss(msStype) ;
            mState = STATE_NONE;
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值