std.net.sip
SIP (Session Initiation Protocol, RFC 3261) ist das Standardsignalisierungsprotokoll für VoIP-Telefonie und Multimedia-Sessions. SIP regelt Aufbau, Änderung und Abbau von Kommunikationssitzungen — die eigentliche Medienübertragung erfolgt separat via RTP. Die Unit implementiert REGISTER, OPTIONS, INVITE-Sequenzen sowie das vollständige Parsing und den Aufbau von SIP-Nachrichten mit allen Status-Codes (1xx Provisional, 2xx Success, 3xx Redirect, 4xx–6xx Error).
Einsatzbereiche sind VoIP-Clients, Telefonanlagen-Integration (PBX), Softphones, SIP-Trunking-Monitoring und automatisierte Tests von SIP-Infrastruktur.
Imports
Konstanten
| Name | Typ | Wert | Sichtbarkeit |
|---|---|---|---|
SIP_PORT | int64 | 5060 | pub |
SIPS_PORT | int64 | 5061 | pub |
SIP_METHOD_REGISTER | int64 | 1 | pub |
SIP_METHOD_INVITE | int64 | 2 | pub |
SIP_METHOD_ACK | int64 | 3 | pub |
SIP_METHOD_BYE | int64 | 4 | pub |
SIP_METHOD_CANCEL | int64 | 5 | pub |
SIP_METHOD_OPTIONS | int64 | 6 | pub |
SIP_METHOD_MESSAGE | int64 | 7 | pub |
SIP_METHOD_SUBSCRIBE | int64 | 8 | pub |
SIP_METHOD_NOTIFY | int64 | 9 | pub |
SIP_METHOD_PUBLISH | int64 | 10 | pub |
SIP_METHOD_INFO | int64 | 11 | pub |
SIP_METHOD_PRACK | int64 | 12 | pub |
SIP_METHOD_UPDATE | int64 | 13 | pub |
SIP_METHOD_REFER | int64 | 14 | pub |
SIP_TRYING | int64 | 100 | pub |
SIP_RINGING | int64 | 180 | pub |
SIP_CALL_IS_BEING_FORWARDED | int64 | 181 | pub |
SIP_QUEUED | int64 | 182 | pub |
SIP_SESSION_PROGRESS | int64 | 183 | pub |
SIP_OK | int64 | 200 | pub |
SIP_ACCEPTED | int64 | 202 | pub |
SIP_MULTIPLE_CHOICES | int64 | 300 | pub |
SIP_MOVED_PERMANENTLY | int64 | 301 | pub |
SIP_MOVED_TEMPORARILY | int64 | 302 | pub |
SIP_USE_PROXY | int64 | 305 | pub |
SIP_ALTERNATIVE_SERVICE | int64 | 380 | pub |
SIP_BAD_REQUEST | int64 | 400 | pub |
SIP_UNAUTHORIZED | int64 | 401 | pub |
SIP_PAYMENT_REQUIRED | int64 | 402 | pub |
SIP_FORBIDDEN | int64 | 403 | pub |
SIP_NOT_FOUND | int64 | 404 | pub |
SIP_METHOD_NOT_ALLOWED | int64 | 405 | pub |
SIP_NOT_ACCEPTABLE | int64 | 406 | pub |
SIP_PROXY_AUTHENTICATION_REQUIRED | int64 | 407 | pub |
SIP_REQUEST_TIMEOUT | int64 | 408 | pub |
SIP_GONE | int64 | 410 | pub |
SIP_REQUEST_ENTITY_TOO_LARGE | int64 | 413 | pub |
SIP_REQUEST_URI_TOO_LONG | int64 | 414 | pub |
SIP_UNSUPPORTED_MEDIA_TYPE | int64 | 415 | pub |
SIP_UNSUPPORTED_URI_SCHEME | int64 | 416 | pub |
SIP_BAD_EXTENSION | int64 | 420 | pub |
SIP_EXTENSION_REQUIRED | int64 | 421 | pub |
SIP_INTERVAL_TOO_BRIEF | int64 | 423 | pub |
SIP_TEMPORARILY_UNAVAILABLE | int64 | 480 | pub |
SIP_CALL_TRANSACTION_DOES_NOT_EXIST | int64 | 481 | pub |
SIP_LOOP_DETECTED | int64 | 482 | pub |
SIP_TOO_MANY_HOPS | int64 | 483 | pub |
SIP_ADDRESS_INCOMPLETE | int64 | 484 | pub |
SIP_AMBIGUOUS | int64 | 485 | pub |
SIP_BUSY_HERE | int64 | 486 | pub |
SIP_REQUEST_TERMINATED | int64 | 487 | pub |
SIP_NOT_ACCEPTABLE_HERE | int64 | 488 | pub |
SIP_REQUEST_PENDING | int64 | 491 | pub |
SIP_UNDECIPHERABLE | int64 | 493 | pub |
SIP_INTERNAL_SERVER_ERROR | int64 | 500 | pub |
SIP_NOT_IMPLEMENTED | int64 | 501 | pub |
SIP_BAD_GATEWAY | int64 | 502 | pub |
SIP_SERVICE_UNAVAILABLE | int64 | 503 | pub |
SIP_SERVER_TIME_OUT | int64 | 504 | pub |
SIP_VERSION_NOT_SUPPORTED | int64 | 505 | pub |
SIP_MESSAGE_TOO_LARGE | int64 | 513 | pub |
SIP_BUSY_EVERYWHERE | int64 | 600 | pub |
SIP_DECLINE | int64 | 603 | pub |
SIP_DOES_NOT_EXIST_ANYWHERE | int64 | 604 | pub |
SIP_NOT_ACCEPTABLE_ANYWHERE | int64 | 606 | pub |
Typen
SIPConn (struct)
| Feld | Typ |
|---|
SIPResponse (struct)
| Feld | Typ |
|---|
Funktionen
| Signatur | Sichtbarkeit | Beschreibung |
|---|---|---|
SIPNextCseq(): int64 | pub | Nächste CSeq-Sequenznummer erzeugen |
SIPGenerateRandom(len: int64): int64 | pub | Zufälligen Call-ID-String erzeugen |
SIPStrLen(s: int64): int64 | pub | Länge eines C-Strings berechnen |
SIPWriteStr(buf: int64, pos: int64, str: int64): int64 | pub | Nullterminierten String in Puffer schreiben |
SIPWriteLit(buf: int64, pos: int64, str: int64, len: int64): int64 | pub | String mit bekannter Länge schreiben |
SIPBuildRequestLine(buf: int64, pos: int64, method: int64, uri: int64): int64 | pub | SIP-Anfrage-Startzeile aufbauen |
SIPBuildRegister(user: int64, domain: int64, contact: int64, callId: int64, cseq: int64): int64 | pub | REGISTER-Nachricht aufbauen |
SIPBuildMessage(fromUser: int64, toUser: int64, toDomain: int64, body: int64, callId: int64, cseq: int64): int64 | pub | MESSAGE-Anfrage aufbauen |
SIPBuildOptions(user: int64, domain: int64, callId: int64, cseq: int64): int64 | pub | OPTIONS-Anfrage aufbauen |
SIPParseStatusCode(msg: int64): int64 | pub | Statuscode aus SIP-Antwort extrahieren |
SIPParseHeader(msg: int64, header: int64, headerLen: int64): int64 | pub | Bestimmten Header aus Nachricht parsen |
SIPConnect(host: int64, port: int64): SIPConn | pub | TCP-Verbindung zu SIP-Server aufbauen |
SIPSend(conn: SIPConn, msg: int64): int64 | pub | SIP-Nachricht über Verbindung senden |
SIPReceive(conn: SIPConn): int64 | pub | SIP-Antwort empfangen |
SIPRegister(conn: SIPConn, user: int64, pass: int64, domain: int64): int64 | pub | Benutzer beim SIP-Registrar anmelden |
SIPSendMessage(conn: SIPConn, toUser: int64, toDomain: int64, body: int64): int64 | pub | SIP-Textnachricht an Empfänger senden |
SIPOptions(conn: SIPConn, user: int64, domain: int64): int64 | pub | Server-Fähigkeiten per OPTIONS abfragen |
SIPDisconnect(conn: SIPConn) | pub | SIP-Verbindung trennen |
