0

我正在尝试将我的设备连接到本地服务器并发送消息,但在尝试连接时出现此错误:E/Error connect()(2016): android.os.NetworkOnMainThreadException。我的代码是这样的:

//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 但也许我做错了而且我是套接字的新手。是的,我的服务器正在运行。谢谢

4

2 回答 2

0

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

于 2014-03-30T03:35:57.333 回答
0

在 AsyncTask 中添加 connect 方法,如下所示:

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();
于 2014-03-30T03:39:47.293 回答