IRC-dokumentasjon · Avansert
Les og analyser formatet til en IRC-melding
En IRC-melding slutter med CRLF. Den kan inneholde tagger, kilde, kommando og parametere. En datablokk mottatt over TCP er ikke nødvendigvis en hel linje. Før meldingene tolkes, må strømmen deles opp korrekt.
Dialova-teamet · Kontrollert
Del opp en linje #
@time=2026-10-29T10:00:00.000Z :Alice!alice@cloak.example PRIVMSG #atelier :Bonjour tout le monde| Del | Verdi i eksemplet | Rolle |
|---|---|---|
| Tagger | @time=… | Metadata før det første mellomrommet som skiller felt. |
| Kilde / prefiks | :Alice!alice@cloak.example | Avsender oppgitt av serveren. |
| Kommando | PRIVMSG | Handling på protokollnivå. |
| Målparameter | #atelier | Mottaker. |
| Siste parameter | :Bonjour tout le monde | En parameter som inneholder mellomrom; kolonet er ikke en del av teksten. |
Mellomrom og siste parameter #
Det grunnleggende skilletegnet er ASCII-mellomrom. Siste parameter kan begynne med et kolon; alt som følger, tilhører da denne parameteren, også mellomrom. En enkel oppdeling av hele linjen ved hvert mellomrom vil miste denne informasjonen.
TOPIC #atelier :
PRIVMSG Bob :texte avec des espaces
PING :jeton-123Det første eksemplet har en tom siste parameter; det andre har tekst med mellomrom. C/S-markørene som brukes i andre eksempler i guiden, inngår aldri i bytene som sendes.
Lengde, byte og tegnkoding #
Den historiske grensen for en IRC-melding er 512 byte, inkludert CRLF. Det betyr ikke 512 tegn: et UTF-8-tegn kan kreve flere byte. IRCv3-tagger har egne tilleggsgrenser som ikke gjør resten av meldingen vilkårlig stor.
Historisk IRC garanterer ikke én felles tegnkoding for all tekst. Moderne klienter og nettverk bruker ofte UTF-8, og IRCv3-taggverdier må være i UTF-8. Sjekk nettverkets regler og håndtering av ugyldige inndata; ikke anta automatisk forhandling av tegnkoding.
En robust parser #
- Samle byte frem til en fullstendig linjeavslutning, og behold det resterende fragmentet.
- Håndter flere linjer i én nettverkslesing og én linje fordelt på flere lesinger.
- Begrens minnebruken før du venter uendelig på en linjeavslutning.
- Trekk ut og dekod taggfeltet, deretter kilde, kommando og parametere.
- Ikke bruk historiske hendelser til å endre nåværende tilstand.
Kilder og kontroll
Eksemplene bruker fiktive kallenavn og domener, bortsett fra tilkoblingspunkter som er uttrykkelig dokumentert. Utvidelser og nettverksspesifikke innstillinger er merket i teksten.
- Modern IRC — spesifikasjon for klientprotokollen ↗Kilde spesifikasjon · lest 2026-10-29
- RFC 2812 — klientprotokollen (2000) ↗Kilde historisk · lest 2026-10-29
- IRCv3 — meldingstagger ↗Kilde spesifikasjon · lest 2026-10-29