0

我試圖將我的設備連接到本地服務器併發送消息,但在嘗試連接時出現此錯誤:E/Error connect()(2016):android.os.NetworkOnMainThreadException。 我的代碼是這樣的:連接到Android上的服務器

//Connect 
public boolean Connect() { 
    //Get data from ip and port from editbox 
    String IP = ipinput.getText().toString(); 
    int PORT = Integer.valueOf(portinput.getText().toString()); 

     //This is where the error is shown 
    try {//create socket with IP + PORT values 
     miCliente = new Socket(IP, PORT); 
     //If it's connected 
     if (miCliente.isConnected() == true) { 
      return true; 
     } else { 
      return false; 
     } 
    } catch (Exception e) { 
     //Show error 
     txtstatus.setTextColor(Color.RED); 
     txtstatus.setText(" !!! ERROR !!!"); 
     Log.e("Error connect()", "" + e); 
     return false; 
    } 
} 

我已經試過的AsyncTask,但也許我做錯了,我是新來的插座。是的,我的服務器正在運行。謝謝

+0

如果你的代碼移到AsyncTask.doInBackground沒有工作,你能發佈更多的代碼? – WindsurferOak

回答

0

中的AsyncTask添加連接方法如下圖所示:

class MakeConnectionTask extends AsyncTask<Void, Void, Void>{ 

    @Override 
    protected Void doInBackground(Void... params) { 
     // TODO Auto-generated method stub 
     Connect(); 
     return null; 
    } 

} 

和執行的AsyncTask是這樣的:

new MakeConnectionTask().execute(); 
+0

謝謝,這工作。 – Zack9807

+0

@ Zack9807如果這有幫助,你可以接受答案。 –

0

所有與網絡相關的操作必須在後臺線程中完成,因此如果您使用的是AsyncTask,請確保所有網絡調用(連接,讀取,寫入等)都在doInBackground中。