2013-11-23 2 views
0

Я хочу использовать один и тот же адрес сокета для нескольких вызовов для этой задачи.AsynckTask in 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. –

ответ

0

Вы не можете сравнивать Java String с с String == 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

Я говорю о сокете не String. – saddam

+0

Просьба указать трассировку стека или более подробное объяснение того, что не так. – Arielle

+0

извините, что я начинаю ,,, когда я называю этот класс (новый ConnectToServer(). Execute (ip, «2000», «br1»);) .... он создает новый сокет, когда я вспоминаю его создание нового сокета и так далее, я хочу использовать один и тот же адрес для всех вызовов? ваш правильный код должен решить Socket s = *** THE CORRECT *** новый Socket (ip, порт); – saddam

Смежные вопросы