连接到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,但也许我做错了,我是新来的插座。是的,我的服务器正在运行。谢谢
答
中的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中。
如果你的代码移到AsyncTask.doInBackground没有工作,你能发布更多的代码? – WindsurferOak