Salve a tutti, sono nuovo e mi sono iscritto per poter chiedere alcuni pareri e/o consigli circa l'applicazione che sto sviluppando in questo momento.
Vi spiego in breve di cosa si tratta: l'applicazione client, che sta su un dispositivo mobile Android permette all'utente di inserire delle ordinazioni (che possono essere di antipasti, primi, secondi, ecc), le quali verranno poi fatte stare in una Stringa (concatenata con il carattere '/') e inviata ad un server (un altro dispositivo Android), il quale dividerà la Stringa e la stamperà nella sua interfaccia.
Ora, inizialmente avevo pensato di approcciarmi al problema utilizzando Thread e Socket, ma da quanto ho letto in rete pare che dalla versione 4.0 in su di Android non sia più possibile.
Mi sono dunque buttato sulle AsynchTask, che mi stanno dando non pochi problemi. Al momento sono arrivato al codice postato a fine messaggio, il quale presenta questi errori sulla logcat:

W/System.err: at com.tabian.client.Conferma$MyTask.doInBackground(C onferma.java:74)
W/System.err: at com.tabian.client.Conferma$MyTask.doInBackground(C onferma.java:59)
Le 2 righe coinvolte sono, in ordine:

socket = new Socket(serverAddress, SERVER_PORT);
private class MyTask extends AsyncTask<String, Void, String>{
È tutto il pomeriggio che cerco su Internet soluzioni e/o cambio cose, ma non ne vengo a capo!
Grazie in anticipo per l'aiuto, e perdonatemi se magari sono stato troppo "lungo" in fase di introduzione, ma spero si sia capito il problema!

CODICE:
codice:
public class Conferma extends AppCompatActivity {

    private static final int SERVER_PORT = 6000;
    private static final String SERVER_IP = "109.115.84.90";
    private static final String TAG = "Conferma";
    private Socket socket;

    @Override
public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.conferma);

        final EditText etTavolo = (EditText) findViewById(R.id.etTavolo);
        final RadioButton rbSi = (RadioButton) findViewById(R.id.rbSi);
        Button bInvia = (Button) findViewById(R.id.bInvia);

        bInvia.setOnClickListener(new View.OnClickListener() {
            @Override
public void onClick(View view) {
                String ordine = getIntent().getExtras().getString("ordine");
                if (etTavolo.getText().toString().equals("")) {
                    AlertDialog.Builder builder = new AlertDialog.Builder(Conferma.this);
                    builder.setMessage("Inserire il numero del tavolo!").setNegativeButton("Riprova!", null).create().show();
                }
                ordine = ordine + "Tavolo: " + etTavolo.getText().toString() + "/";
                if (rbSi.isChecked()) {
                    ordine = ordine + "Coperto: Sì/";
                } else {
                    ordine = ordine + "Coperto: No/";
                }
                Log.d(TAG, ordine);

                new MyTask().execute(ordine);
            }
        });
    }

    private class MyTask extends AsyncTask<String, Void, String>{

        @Override
protected String doInBackground(String... params) {
            String ordine = params[0];
            Log.d(TAG, ordine);

            InetAddress serverAddress = null;
            try {
                serverAddress = InetAddress.getByName(SERVER_IP);
            } catch (UnknownHostException e) {
                e.printStackTrace();
            }
            Log.d(TAG, "creato");
            try {
                socket = new Socket(serverAddress, SERVER_PORT);
            } catch (IOException e) {
                e.printStackTrace();
            }
            inviaStringa(ordine, socket);

            return "Executed";
        }


    }

    private void inviaStringa(String ordine, Socket socket) {
        try {
            OutputStream s = socket.getOutputStream();
            Log.d(TAG, "ok1");
            OutputStreamWriter outputStreamWriter = new OutputStreamWriter(s);
            Log.d(TAG, "ok2");
            BufferedWriter bufferedWriter = new BufferedWriter(outputStreamWriter);
            Log.d(TAG, "ok3");
            PrintWriter out = new PrintWriter(bufferedWriter, true);
            Log.d(TAG, "ok4");
            out.println(ordine);
        } catch (Exception e) {
            Log.e(TAG, "Errore0000: " + e);
        }
    }

}