在android中处理套接字终止

时间:2012-06-04 18:14:01

标签: java android multithreading sockets

我使用以下代码连接到设备。

使用这个套接字代码我可以执行所有任务,但现在我需要在服务器停机时执行一些功能。我无法找到合适的方法,请帮助。

修改

我想检测服务器何时与此客户端断开连接,意味着在执行事务后服务器将断开连接,以便我可以禁用按钮,

void sendRequest(){

  try {
      this.clientSocket=new Socket("192.168.1.11",2000);
        this.os=new DataOutputStream(this.clientSocket.getOutputStream());
        this.in=new DataInputStream(this.clientSocket.getInputStream());

           sendFirtCommand();   
           Client t=new Client();
        t.start();

        }catch(Exception e){
            e.printStackTrace();

        }       
          }// end of the sendRequest

我的线程代码

private class Client extends Thread{
  int time;
  public void run(){
    try{
        while(true){


            //if(in.read()==-1) break;

            int size =in.available();
            if(size>0){

            byte data[]=new byte[size];
            in.readFully(data);
            String str=new String(data);

            // System.out.println(data);
            //char c[]=str.toCharArray();
            str=toHex(data);
            System.out.println(str);
        /*
            if(str.equalsIgnoreCase("050D00E7F0E1000101581D4A1D01FF")){
            System.out.println("Start Left 3"); 

            }

            */

             if(str.equalsIgnoreCase("050d00e7f0e1000101601d4a1d01ff")){
                stopAll();
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        enableAll();
                    }
                });
            }
         }

1 个答案:

答案 0 :(得分:0)

如果有帮助,试试这个

try{
        while(true){
             if(str.equalsIgnoreCase("050d00e7f0e1000101601d4a1d01ff")){
                stopAll();
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        enableAll();
                    }
                });
            }
         }
   }catch(IOException e)
   {
     handler.post(new Runnable() {
                    @Override
                    public void run() {
                        enableAll();
                    }
                });
   }

似乎您发布的代码中没有异常处理,如果我遗漏了某些内容,请告诉我......