Erro com comunicação Socket - Android

Tenho este trecho código.:

public class Consulta extends AsyncTask<Void, Void, Void> {

    @Override
    protected Void doInBackground(Void... params) {
        try {
            Socket cliente = new Socket("10.20.1.100", 12345);
            ObjectInputStream entrada = new ObjectInputStream(cliente.getInputStream());
            List<PessoaMOD> pessoas = (List) entrada.readObject();
            for (PessoaMOD p : pessoas) {
                Log.d("teste", "ID: " + p.getId() + " - Nome: " + p.getNome());
            }
            entrada.close();
            Log.d("teste", "Conexão encerrada");
        } catch (Exception e) {
            Log.d("teste", "Erro: " + e);
        }

        return null;
    }
}


private void botaoComunicarServidor() {
    Button btComunicarServidor = (Button) findViewById(R.id.btComunicarServidor);
    btComunicarServidor.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            new Consulta().execute();
        }
    });
}

public class PessoaMOD implements Serializable{
    private int id;
    private String nome;

    public PessoaMOD(){

    }

    public PessoaMOD(int id, String nome){
        setId(id);
        setNome(nome);
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }
}

Dá o seguinte erro:
java.lang.ClassNotFoundException: PessoaMOD

Em uma aplicação java, este mesmo código que uso no Android funciona…

No MANIFEST já liberei acesso para Internet:

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

Quebre esse arquivo em dois (ou três) arquivos diferentes:

Consulta.java

public class Consulta extends AsyncTask<Void, Void, Void> {

    @Override
    protected Void doInBackground(Void... params) {
        try {
            Socket cliente = new Socket("10.20.1.100", 12345);
            ObjectInputStream entrada = new ObjectInputStream(cliente.getInputStream());
            List<PessoaMOD> pessoas = (List) entrada.readObject();
            for (PessoaMOD p : pessoas) {
                Log.d("teste", "ID: " + p.getId() + " - Nome: " + p.getNome());
            }
            entrada.close();
            Log.d("teste", "Conexão encerrada");
        } catch (Exception e) {
            Log.d("teste", "Erro: " + e);
        }

        return null;
    }
}

PessoaMOD.java

public class PessoaMOD implements Serializable{
    private int id;
    private String nome;

    public PessoaMOD(){

    }

    public PessoaMOD(int id, String nome){
        setId(id);
        setNome(nome);
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }
}

MinhaActivity.java

private void botaoComunicarServidor() {
    Button btComunicarServidor = (Button) findViewById(R.id.btComunicarServidor);
    btComunicarServidor.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            new Consulta().execute();
        }
    });
}

Já está quebrado, só aqui no post que coloquei tudo junto…

Me mostra o caminho desses arquivos… Em qual pasta eles estão, em qual pacote…?

Estão tudo no mesmo pacote:

-----------------EDIT------------------

Descobri o erro, mas não sei como resolver… haha

O erro acontece porque o nome do pacote da classe PessoaMOD no servidor é diferente do nome do pacote da aplicação cliente. Eu coloquei o mesmo nome de pacote e funcionou. Mas eu troquei o nome só para testar, não posso trocar o nome do pacote… Como posso resolver isso?

Quando você usa Socket o nome da classe serializada e deserializada tem que ser o mesmo. Então, pode fazer algo assim:

com.softcom.compartilhado.PessoaMOD

No seu servidor e no Android.

Isso é causado pela implementação do readObject, que é mais ou menos assim:

 String s = leNomeDaClasse();
 Class c = Class.forName(s); // Aqui há o classNotFound
 Object o = c.newInstance();
//Popula objeto o...