В вашем «неработающем примере» вы создаете 5 разных AsyncTask, каждый из которых отправляет одно сообщение в tcpsocketOutputStream.Каждая из этих задач выполняется асинхронно, более или менее одновременно (в зависимости от того, сколько доступно процессорных ядер).Я предполагаю, что tcpsocketOutputStream не подходит для выдачи sendPreparedMessage (msg), если он еще не завершил отправку предыдущего.
Как насчет создания только одного AsyncTask и подачи всех 5 сообщений за один вызов?
new SendMessage().execute(message1,message2,message3,message4,message5);
А в методе doInBackground вы отправляете полученные 5 сообщений в цикле.
for (EASMessageBase msg : easMessageBases)
{
// send the msg
}
Или каждая ваша асинхронная задача должна открыть соединение с сокетом для своего собственного.