Infatti: devi gestire i processi come ti ha spigato Marco...
Devi fare una cosa del tipo:
codice:
{
    pid_t pid;
    int fd_della_socket
    
    pid = fork ( );      // forki il processo
    if ( pid == 0 ) {
        // codice eseguito dal paadre
        // fd_della_socket = connettiti alla porta 1...
    } else {
        // codice eseguito dal figlio
        // fd_della_socket = connettiti alla porta 2...
    }
    // codice eseguito da entrambi
    // ...
}


Per maggiori info sulla fork: http://www.lilik.it/~mirko/gapil/gap...x81-510003.2.2







Puoi usare anche metodi alternativi alla fork, puoi ad esempio utilizzare i pthreads oppure puoi usare un solo processo e ascoltare entrambe le porte grazie alla select o alla poll, ma questo metodo e' sconsigliato perche' nei nanosecondi in cui leggi una socket non puoi fare altro (nemmeno leggere l'altra)...