title: CTCP
text: # CTCP
  
  CTCP è l'acronimo inglese per Client-To-Client Protocol è uno speciale tipo di comunicazione tra client IRC.
  
  CTCP è un protocollo implementato dalla gran parte dei client IRC in uso oggi. CTCP estende l'originale protocollo di IRC permettendo agli utenti di interrogare altri client per ottenere specifiche informazioni. Inoltre, CTCP può essere usato per codificare messaggi con caratteri speciali come ad esempio newline oppure i byte di valore 0, che altrimenti il protocollo raw dei server IRC (che permette al server di inviare messaggi al proprio client) non sarebbe in grado di inviare. Sono disponibili diversi tipi di richieste CTCP, ad esempio:
  
  * CTCP VERSION: che mostra agli utenti che inviano questa richiesta ad altri utenti, la versione e il tipo di client IRC usato da questi ultimi
  * CTCP TIME: mostra l'orario del client interrogato dall'utente
  * CTCP Ping: pinga il client dell'utente interrogato per conoscere il tempo che impiega un messaggio per arrivare da noi a lui.
  * CTCP USERINFO: restituisce qualunque informazione una persona sceglie di mettere come risposta a tale richiesta sul proprio client
  
  CTCP è usato anche per negoziare le connessioni DCC. Un messaggio CTCP è implementato come un PRIVMSG dove il primo e l'ultimo carattere del messaggio sono di tipo ASCII di valore 0x01. Inoltre, i caratteri non permessi dal protocollo IRC sono evitati. Una risposta CTCP è implementata come un NOTICE invece che come un PRIVMSG, altrimenti sarebbero identiche.
  
  