IRC-documentatie · Expert
Het IRC-berichtformaat lezen en ontleden
Een IRC-bericht eindigt met CRLF en kan tags, bron, opdracht en parameters bevatten. Op TCP is een ontvangen gegevensstuk niet noodzakelijk een hele regel. Splits eerst berichten voordat je ze interpreteert.
Dialova-team · Gecontroleerd op
Een regel ontleden #
@time=2026-10-29T10:00:00.000Z :Alice!alice@cloak.example PRIVMSG #atelier :Bonjour tout le monde| Onderdeel | Waarde in dit voorbeeld | Rol |
|---|---|---|
| Tags | @time=… | Metadata vóór de eerste scheidende spatie. |
| Bron / prefix | :Alice!alice@cloak.example | Door de server opgegeven auteur. |
| Opdracht | PRIVMSG | Protocolactie. |
| Doelparameter | #atelier | Bestemming. |
| Laatste parameter | :Bonjour tout le monde | Een parameter met spaties. De dubbele punt hoort niet bij de tekst. |
Spaties en de laatste parameter #
De basisscheiding is de ASCII-spatie. Een dubbele punt kan de laatste parameter inleiden. Alles daarna, inclusief spaties, hoort bij die parameter. De hele regel op spaties splitsen verliest deze informatie.
TOPIC #atelier :
PRIVMSG Bob :texte avec des espaces
PING :jeton-123Het eerste voorbeeld heeft een lege laatste parameter. Het tweede bevat tekst met spaties. De richtinglabels C/S elders in deze gids horen nooit bij de verstuurde bytes.
Lengte, bytes en tekencodering #
De historische limiet is 512 bytes inclusief CRLF. Dat zijn geen 512 tekens. Een UTF-8-teken kan meerdere bytes gebruiken. IRCv3-tags hebben eigen extra grenzen, die de rest van het bericht niet onbeperkt maken.
Historisch IRC garandeert geen uniforme tekstcodering. Moderne clients en netwerken gebruiken vaak UTF-8. IRCv3-tagwaarden moeten UTF-8 zijn. Controleer netwerkbeleid en ongeldige invoer. Verzin geen automatische coderingsonderhandeling.
Een robuuste parser #
- Verzamel bytes tot een volledig regeleinde en bewaar het resterende fragment.
- Verwerk meerdere regels in één leesactie en één regel verspreid over meerdere leesacties.
- Begrens geheugen in plaats van eindeloos op een regeleinde te wachten.
- Isoleer en decodeer tags en daarna bron, opdracht en parameters.
- Voer oude gebeurtenissen niet uit als wijzigingen van de huidige status.
Bronnen en controle
De voorbeelden gebruiken fictieve gebruikersnamen en domeinen, behalve waar verbindingspunten uitdrukkelijk zijn gedocumenteerd. Uitbreidingen en netwerkspecifieke instellingen worden in de tekst aangegeven.
- Modern IRC — specificatie van het clientprotocol ↗Bron specificatie · geraadpleegd op 2026-10-29
- RFC 2812 — clientprotocol (2000) ↗Bron historisch · geraadpleegd op 2026-10-29
- IRCv3 — berichttags ↗Bron specificatie · geraadpleegd op 2026-10-29