Hoppa till innehållet
Dialova

IRC-dokumentation · Avancerad

Läs och tolka IRC-meddelanden

Ett IRC-meddelande slutar med CRLF och kan ha taggar, källa, kommando och parametrar. En mottagen TCP-databit behöver inte vara en hel rad. Meddelandeindelning kommer före tolkning.

Dialovas team · Kontrollerat den

Dela upp en rad #

Exempelrad utan avslutande CRLF i visningen
@time=2026-10-29T10:00:00.000Z :Alice!alice@cloak.example PRIVMSG #atelier :Bonjour tout le monde
DelVärde i exempletRoll
Taggar@time=…Metadata före första avgränsande mellanslaget.
Källa/prefix:Alice!alice@cloak.exampleFörfattare angiven av servern.
KommandoPRIVMSGProtokollåtgärd.
Målparameter#atelierDestination.
Sista parameter:Bonjour tout le mondeParameter med mellanslag. Kolonet ingår inte i texten.

Mellanslag och sista parameter #

Grundavgränsaren är ASCII-mellanslag. Ett kolon kan inleda sista parametern. Allt därefter, även mellanslag, tillhör den parametern. Om hela raden delas på mellanslag förloras informationen.

Tre separata meddelanden, vart och ett avslutat med CRLF
TOPIC #atelier :
PRIVMSG Bob :texte avec des espaces
PING :jeton-123

Första exemplet har tom sista parameter. Andra har text med mellanslag. Riktningsmarkörerna C/S i guidens övriga exempel ingår aldrig i skickade byte.

Längd, byte och kodning #

Den historiska IRC-gränsen är 512 byte inklusive CRLF, inte 512 tecken. Ett UTF-8-tecken kan använda flera byte. IRCv3-taggar har egna extra gränser som inte gör resten av meddelandet obegränsat.

Historisk IRC garanterar ingen gemensam textkodning. Moderna klienter och nätverk använder ofta UTF-8 och IRCv3-taggar ska ha UTF-8-värden. Kontrollera nätverkspolicy och ogiltig indata. Hitta inte på automatisk kodningsförhandling.

En robust tolk #

  • Samla byte tills en hel rad finns och behåll resterande fragment.
  • Hantera flera rader i en nätverksläsning och en rad över flera läsningar.
  • Begränsa minnet i stället för att vänta obegränsat på radslut.
  • Extrahera och avkoda taggar, sedan källa, kommando och parametrar.
  • Utför inte historiska händelser som ändringar av aktuellt tillstånd.

Källor och kontroll

Exemplen använder påhittade smeknamn och domäner, utom uttryckligen dokumenterade anslutningspunkter. Nätverksspecifika tillägg och inställningar anges i texten.