Fai un pò di debug spezzando la read. (Anche perché la read restituisce il numero di caratteri letti)
codice:
// Legge il vettore dal socket
int res = read(fd, (char*)array, dimensione*sizeof(int)); 
printf("%d\n",res);
if( res < 0 )
{
   perror("Errore di lettura array");
   close(fd);
   exit(1);
}