连接到Android上的服务器

问题描述:

我试图将我的设备连接到本地服务器并发送消息,但在尝试连接时出现此错误: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

中的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如果这有帮助,你可以接受答案。 –

所有与网络相关的操作必须在后台线程中完成,因此如果您使用的是AsyncTask,请确保所有网络调用(连接,读取,写入等)都在doInBackground中。