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 |
