Inhaltsverzeichnis

std.net.types

Typdefinitionen und Hilfsfunktionen für Socket-Adressen und IP-Adressen. Enthält Strukturen für IPv4 (SockAddrIn), IPv6 (SockAddrIn6), MAC-Adressen, Ethernet-Header und ARP-Pakete sowie Konvertierungsfunktionen zwischen Host- und Netzwerk-Byte-Order (Htons/Ntohs) und IP-Adress-Parser für IPv4 und IPv6.

Wird von nahezu allen Netzwerk-Units als gemeinsame Datenbasis importiert und ist selten direkt einzubinden – die höheren Units (std.net.socket, std.net.http etc.) importieren sie automatisch.


Konstanten

Name Typ Wert Sichtbarkeit
AF_INET int64 2 pub
AF_INET6 int64 10 pub
SOCK_STREAM int64 1 pub
SOCK_DGRAM int64 2 pub
SOCK_RAW int64 3 pub
IPPROTO_TCP int64 6 pub
IPPROTO_UDP int64 17 pub
IPPROTO_ICMP int64 1 pub
IPPROTO_RAW int64 255 pub
SOL_SOCKET int64 1 pub
SO_REUSEADDR int64 2 pub
TCP_NODELAY int64 1 pub
TCP_KEEPALIVE int64 $10 pub
SO_KEEPALIVE int64 9 pub
SO_RCVBUF int64 8 pub
SO_SNDBUF int64 7 pub
SO_ERROR int64 4 pub
SO_TYPE int64 3 pub
SO_REUSEPORT int64 15 pub
SO_LINGER int64 13 pub
MSG_PEEK int64 2 pub
MSG_DONTWAIT int64 64 pub
PROT_READ int64 1 pub
PROT_WRITE int64 2 pub
PROT_RW int64 3 pub
MAP_ANONYMOUS int64 32 pub
MAP_PRIVATE int64 2 pub
MAP_ANON int64 34 pub
FD_NONE int64 -1 pub
ICMP_ECHO int64 8 pub
ICMP_ECHOREPLY int64 0 pub
ETH_P_IP int64 $0800 pub
ETH_P_ARP int64 $0806 pub
ETH_P_IPV6 int64 $86DD pub
ETH_ALEN int64 6 pub
ARPOP_REQUEST int64 1 pub
ARPOP_REPLY int64 2 pub
ARPOP_RREQUEST int64 3 pub
ARPOP_RREPLY int64 4 pub
ARPOP_INREQUEST int64 8 pub
ARPOP_INREPLY int64 9 pub
ARPOP_NAK int64 10 pub
ARPHRD_ETHER int64 1 pub
UNIX_PATH_MAX int64 108 pub

Typen

NativeSocket = int64

IPAddr (struct)

Feld Typ
family int64
a uint8
b uint8
c uint8
d uint8
port uint16

SockAddrIn (struct)

Feld Typ
family uint16
port uint16
addr int64
zero int64

MacAddr (struct)

Feld Typ
a uint8
b uint8
c uint8
d uint8
e uint8
f uint8

EthernetHeader (struct)

Feld Typ
dst MacAddr
src MacAddr
ethertype uint16

ARPPacket (struct)

Feld Typ

Funktionen

Signatur Sichtbarkeit Beschreibung
Htons(port: uint16): uint16 pub Konvertiert Port in Netzwerk-Byte-Order
Ntohs(port: uint16): uint16 pub Konvertiert Port in Host-Byte-Order
asciiToDigit(c: int64): int64 priv Wandelt ASCII-Zeichen in Dezimalziffer
parseOctet(s: int64, pos: int64, len: int64, outVal: int64): int64 priv Parst ein IPv4-Oktet aus String
parsePort(s: int64, pos: int64, len: int64, outPort: int64): int64 priv Parst Portnummer aus String
ParseIPAddr(s: int64, len: int64): IPAddr pub Parst IPv4-Adresse aus String
MakeSockAddr(ip: IPAddr): SockAddrIn pub Erstellt SockAddrIn aus IPAddr
SockAddrInCreate(addr: int64, ip: int64, port: int64) pub Befüllt sockaddr_in-Struktur im Speicher
TimeValCreate(addr: int64, timeoutMs: int64) pub Schreibt timeval-Struktur in Speicher
SockAddrUnCreate(addr: int64, path: int64): int64 pub Befüllt sockaddr_un-Struktur mit Pfad
IPv6MakeHi(a: int64, b: int64, c: int64, d: int64): int64 pub Packt obere vier IPv6-Gruppen
IPv6MakeLo(e: int64, f: int64, g: int64, h: int64): int64 pub Packt untere vier IPv6-Gruppen
IPv6GetGroup(ip6Hi: int64, ip6Lo: int64, i: int64): int64 pub Liest IPv6-Gruppe per Index
IPv6LoopbackHi(): int64 { return 0; } pub Gibt obere Hälfte der Loopback-Adresse
IPv6LoopbackLo(): int64 { return 1; } pub Gibt untere Hälfte der Loopback-Adresse
IPv6AnyHi(): int64 { return 0; } pub Gibt obere Hälfte der Any-Adresse
IPv6AnyLo(): int64 { return 0; } pub Gibt untere Hälfte der Any-Adresse
SockAddrIn6Create(addr: int64, ip6Hi: int64, ip6Lo: int64, port: int64) pub Befüllt sockaddr_in6-Struktur im Speicher
hexDigit(c: int64): int64 priv Wandelt Hex-Zeichen in Zahlenwert
parseIPv6Group(s: int64, pos: int64, len: int64, outVal: int64): int64 priv Parst einzelne IPv6-Gruppe aus String
ParseIPv6(s: int64, len: int64, outHi: int64, outLo: int64) pub Parst vollständige IPv6-Adresse
nibbleToHex(d: int64): int64 priv Wandelt Nibble in Hex-Zeichen
writeHex16(buf: int64, pos: int64, val: int64): int64 priv Schreibt 16-Bit-Wert als Hex-String
IPv6Format(ip6Hi: int64, ip6Lo: int64, buf: int64) pub Formatiert IPv6-Adresse als String