El uso de AsyncTask para android conexión de red

Estoy teniendo algunos problemas con el uso de AsyncTask como nunca me he encontrado con él antes y no tienen idea de lo que estoy haciendo con él.

Básicamente me estoy haciendo una fuerza de cerca porque estoy tratando de ejecutar la conexión en una clase principal. Podría alguien posiblemente me ayude con la adición de AsyncTask en el código:

package com.smarte.smartipcontrol;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;

public class IPControl extends Activity {

  private Socket socket;
  private String serverIpAddress;
  private static final int REDIRECTED_SERVERPORT = 32;
  public PrintWriter out;
  public BufferedReader in ;

    @Override
      public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        //Get the message from the intent
        Intent intent = getIntent();
        serverIpAddress = intent.getStringExtra(IPEntry.ACTUALSMARTIP);
        createConnection();

      }

  public void getModel(View view) {
    try {
      out.println("[m\r\n");
      //System.out.print("root\r\n");
      while (! in .ready());
      String textStatus = readBuffer();

    } catch (IOException e) {}
  }

  public void createConnection() {
    try {
      InetAddress serverAddr = InetAddress.getByName(serverIpAddress);
      socket = new Socket(serverAddr, REDIRECTED_SERVERPORT);
    } catch (UnknownHostException e1) {
      e1.printStackTrace();
    } catch (IOException e1) {
      e1.printStackTrace();
    }
    try {
      out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())), true); in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
      while (! in .ready());
      readBuffer();
      out.println("root\r\n");
      //System.out.print("root\r\n");
      while (! in .ready());
      readBuffer();
      out.println("root\r\n");
      //System.out.print("root\r\n");
      while (! in .ready());
      readBuffer();
    } catch (IOException e) {}


    //R.id.textStatus
  }

  private String readBuffer() throws IOException {
    String msg = "";

    while ( in .ready()) {
      msg = msg + (char) in .read();
    }
    //System.out.print(msg);
    if (msg.indexOf("SNX_COM> ") != -1) return msg.substring(0, msg.indexOf("SNX_COM> "));
    else return msg;
  }

}

3 Kommentare

  1. 1

    Sólo un ejemplo rápido de cómo migtht aspecto:

    public class IPControl extends Activity {
        private ProgressDialog pd = null;
        private String data = null;
        private Socket socket;
        private String serverIpAddress;
        private static final int REDIRECTED_SERVERPORT = 32;
        public PrintWriter out;
        public BufferedReader in ;
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    
            setContentView(R.layout.main);
    
            try{   
                this.pd = ProgressDialog.show(this, "Loading..", "Please Wait...", true, false);
                new AsyncAction().execute();
    
            }catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        private class AsyncAction extends AsyncTask<String, Void, String> {
            protected Void doInBackground(String... args) { 
                try {
                    InetAddress serverAddr = InetAddress.getByName(serverIpAddress);
                    socket = new Socket(serverAddr, REDIRECTED_SERVERPORT);
                } catch (UnknownHostException e1) {
                    e1.printStackTrace();
                } catch (IOException e1) {
                    e1.printStackTrace();
                }
                try {
                    out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())), true);
                    in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
                    while (! in.ready());
                    readBuffer();
                    out.println("root\r\n");
                    //System.out.print("root\r\n");
                    while (! in .ready());
                    readBuffer();
                    out.println("root\r\n");
                    //System.out.print("root\r\n");
                    while (! in .ready());
                    String msg = "";
    
                    while (in.ready()) {
                        msg = msg + (char) in .read();
                    }
                } catch (IOException e) {}
    
            return null;//returns what you want to pass to the onPostExecute()
        }
    
        protected void onPostExecute(String result) {
            //resultis the data returned from doInbackground
            IPControl.this.data = result;
    
            if (IPControl.this.pd != null) {
                IPControl.this.pd.dismiss();
            }
        } 
    }
  2. 0

    Mediante la comprobación de la documentación correspondiente aquí..

    Que usted necesita para poner al crear la conexión de la parte en la doInBackground.. entonces en la onPostExecute hacer lo que usted desea actualizar la interfaz de usuario.

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea