AsynckTask android系统

AsynckTask android系统

问题描述:

我想使用同一个套接字地址多次调用此任务。AsynckTask android系统

我试图从不同的类中的地址,但没有奏效。

请帮助!

我从不同类别的呼叫是:

new ConnectToServer().execute(ip, "2000", "br1"); 

我的任务代码是:

public class ConnectToServer extends AsyncTask<String, Void, Void> { 

    @Override 
    protected Void doInBackground(String... parms) { 
     // TODO Auto-generated method stub 
     try { 

      Socket s = new Socket(parms[0], Integer.parseInt(parms[1])); 
      // ****** 

      OutputStream os = s.getOutputStream(); 
      BufferedOutputStream out = new BufferedOutputStream(os); 

      if (parms[2] == "br1") { 
       out.write("rr1".getBytes()); 
       out.write('\n'); 
       out.flush(); 
      } else if (parms[2] == "br2") { 

       out.write("rr2".getBytes()); 
       out.write('\n'); 
       out.flush(); 
      } else if (parms[2] == "br3") { 
       out.write("rr3".getBytes()); 
       out.write('\n'); 
       out.flush(); 
      } else if (parms[2] == "br4") { 
       out.write("rr4".getBytes()); 
       out.write('\n'); 
       out.flush(); 
      } else if (parms[2] == "bb1") { 
       out.write("bb1".getBytes()); 
       out.write('\n'); 
       out.flush(); 
      } else if (parms[2] == "bb2") { 
       out.write("bb2".getBytes()); 
       out.write('\n'); 
       out.flush(); 
      } else if (parms[2] == "bb3") { 
       out.write("bb3".getBytes()); 
       out.write('\n'); 
       out.flush(); 
      } else if (parms[2] == "bb4") { 
       out.write("bb4".getBytes()); 
       out.write('\n'); 
       out.flush(); 
      } 

      // s.shutdownOutput(); 

     } catch (NumberFormatException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (UnknownHostException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     return null; 
    } 

} 
+0

'PARMS [2] == “BR1”'。不好。搜索如何比较Java中的字符串。 –

你不能String == String相对于Java String秒。您需要改用String.equals(String)

尝试此代码:

 if (parms[2].equals("br1")) { 
      out.write("rr1".getBytes()); 
      out.write('\n'); 
      out.flush(); 
     } else if (parms[2].equals("br2")) { 

      out.write("rr2".getBytes()); 
      out.write('\n'); 
      out.flush(); 
     } else if (parms[2].equals("br3")) { 
      out.write("rr3".getBytes()); 
      out.write('\n'); 
      out.flush(); 
     } else if (parms[2].equals("br4")) { 
      out.write("rr4".getBytes()); 
      out.write('\n'); 
      out.flush(); 
     } else if (parms[2].equals("bb1")) { 
      out.write("bb1".getBytes()); 
      out.write('\n'); 
      out.flush(); 
     } else if (parms[2].equals("bb2")) { 
      out.write("bb2".getBytes()); 
      out.write('\n'); 
      out.flush(); 
     } else if (parms[2].equals("bb3")) { 
      out.write("bb3".getBytes()); 
      out.write('\n'); 
      out.flush(); 
     } else if (parms[2].equals("bb4")) { 
      out.write("bb4".getBytes()); 
      out.write('\n'); 
      out.flush(); 
     } 
+0

我说说socket不是String。 – saddam

+0

请给一个堆栈跟踪或什么是错的更深入的解释。 – Arielle

+0

对不起,我是初学者,,,当我调用这个类(新ConnectToServer()执行(IP,“2000”,“BR1”);)......这是创造新的插座,当我回想起它创造新的插座等等,我想为所有的电话使用相同的地址?你的正确代码应该解决Socket s = ***正确*** new Socket(ip,port); – saddam