Passa ai contenuti principali

C++ chiusura improvvisa connessione TCP

Puo' capitare che bruscamente, dopo che la connessione sia stata stabilita, uno dei due peer vada giu'. In questo caso, l'altro peer non si comporta correttamente. Di default, la receive ritorna 0 come numero di bytes ricevuti, per cui il peer non si accorge che l'altro peer non e' attivo, mentre la send ritorna -1, setta la variabile errno al valore EPIPE e lancia il segnale SIGPIPE, che normalmente fa uscire il processo.

Per evitare che il processo termini in seguito al segnale SIGPIPE si puo' settare l'opzione MSG_NOSIGNAL nella send in modo che il segnale SIGPIPE venga ingnorato.

In particolare:


iNumBytes = send(iSocket, _vMessage, _iMessageSize, MSG_NOSIGNAL);
if(iNumBytes == -1)
{
if(errno == EPIPE)
{
// gestisco l'errore
return 0;
}
}


Nel caso della receive, invece posso semplicemente gestire il caso in cui il numero di bytes ritornati e' 0.

Post popolari in questo blog

Mysql gestione caratteri utf8

Per gestire i caratteri ut8 seguire la seguente procedura: nel file di configurazione di mysql, chiamato my.conf, nella sezione [mysqld] aggiungere le seguenti due linee di configurazione: character-set-server=utf8 default-collation=utf8_unicode_ci e riavviare il server mysql. Creare poi un database nel formato utf8_unicode_ci e tutte le tabelle nel formato utf8_unicode_ci. Impostare il browser da html con il supporto utf8_unicode: <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> </head> Quando ci si connette al db: $con = mysql_connect("localhost","user","pass");   mysql_query("SET CHARACTER SET 'utf8'", $con); Quando si inserisce una nuova riga nel db, si fa nel seguente modo: $query = "INSERT INTO table(value) VALUES ( _utf8'$node_word')"; Per maggiori dettagli clicca qui .

Finalmente Lion OS

A tutti coloro che hanno problemi nell'installazione di Lion OS: il problema principale risiede nel fatto che si fa l'upgrade da Snow Leopard a Lion. Facendo l'upgrade, infatti, ho notato che molte funzionalità di Lion non funzionano. Ad esempio Lion fornisce la Shell a tutto schermo, ma facendo l'upgrade da Snow Leopard non funziona. Inoltre il wireless da problemi di connettività e ogni tanto il mac si blocca. La soluzione al problema consiste nel formattare il pc e installare Lion da zero. Su questo sito si trova una splendida guida che permette di fare ciò. Buon divertimento con il nuovo Lion OS, che è molto più avanti rispetto a Snow Leopard!