Nueve veces fuera de diez estos problemas son debido a la carencia de la coordinación entre el cliente escriben y el servidor lee y viceversa. Por ejemplo, debido a las corrientes que bloquean, su programa se trabará para arriba si intenta leer cuando no se ha escrito ni será nada.
Sugiero que usted pase con su código con un peine de dientes finos para esta clase de problema