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 #
@time=2026-10-29T10:00:00.000Z :Alice!alice@cloak.example PRIVMSG #atelier :Bonjour tout le monde| Del | Värde i exemplet | Roll |
|---|---|---|
| Taggar | @time=… | Metadata före första avgränsande mellanslaget. |
| Källa/prefix | :Alice!alice@cloak.example | Författare angiven av servern. |
| Kommando | PRIVMSG | Protokollåtgärd. |
| Målparameter | #atelier | Destination. |
| Sista parameter | :Bonjour tout le monde | Parameter 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.
TOPIC #atelier :
PRIVMSG Bob :texte avec des espaces
PING :jeton-123Fö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.
- Modern IRC — specifikation för klientprotokollet ↗Källa specifikation · kontrollerad den 2026-10-29
- RFC 2812 — klientprotokollet (2000) ↗Källa historisk · kontrollerad den 2026-10-29
- IRCv3 — meddelandetaggar ↗Källa specifikation · kontrollerad den 2026-10-29