Naar de inhoud
Dialova

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 #

Voorbeeldregel; afsluitende CRLF niet getoond
@time=2026-10-29T10:00:00.000Z :Alice!alice@cloak.example PRIVMSG #atelier :Bonjour tout le monde
OnderdeelWaarde in dit voorbeeldRol
Tags@time=…Metadata vóór de eerste scheidende spatie.
Bron / prefix:Alice!alice@cloak.exampleDoor de server opgegeven auteur.
OpdrachtPRIVMSGProtocolactie.
Doelparameter#atelierBestemming.
Laatste parameter:Bonjour tout le mondeEen 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.

Drie aparte berichten, elk afgesloten met CRLF
TOPIC #atelier :
PRIVMSG Bob :texte avec des espaces
PING :jeton-123

Het 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.