I'm trying to connect a socket with Android. I know that you can't open network-connections from MainThread. I have created an AsyncTask to do it. I have created and private class inside of the main class, I have seen some examples on internet about that.
Could someone help me about what it's wrong?? I guess that it's a error in the way I'm trying to connect because I have connected to the server with a normal Java class. I have edited the manisfest to give the necessary permissions.
If someone has any advise about a better way to do it, it would be great.
public class MainActivity extends Activity {
    private ObjectInputStream input;
    private ObjectOutputStream output;          
    private Button buttonCreateRoom;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        buttonCreateRoom = (Button)findViewById(R.id.buttonCreate);
        //buttons       
        buttonCreateRoom.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                onClickButton(ConstantsRooms.CREATE_ROOM);
            }
        });
    }
    private void onClickButton(int numberButton){
        RequestMessage request = null;
        switch (numberButton) {
            ....
        }
        AsyncButtons asyncButtons = new AsyncButtons();
        asyncButtons.execute(request);  
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
    //Botones
   private class AsyncButtons extends AsyncTask<RequestMessage, ResponseMessage, Void> {
        private Socket socket;
        @Override
        protected Void doInBackground(RequestMessage... params) {
            RequestMessage request;
            ResponseMessage response;
            Void v = null;
            try{
                request = params[0];                    
                output.writeObject(request);
                output.flush();     
                response = (ResponseMessage)input.readObject();
            ...
        } 
        @Override
        protected void onPreExecute() {
            try{
                // Setup networking
                **socket = new Socket(ConstantsRooms.SERVER_ADDRESS, ConstantsRooms.PORT_PUBLIC); -->ERROR**
                socket.setTcpNoDelay(true);
                output = new ObjectOutputStream(socket.getOutputStream());
                output.flush();
                input = new ObjectInputStream(socket.getInputStream());
            }catch (Exception exp){
                Log.e(TAG, "Excepcion socket ---");
                exp.printStackTrace();
            }
        }           
    }
}
 
    