Inhaltsverzeichnis

std.net.socket

Umfassende Socket-Abstraktion für TCP, UDP, Unix Domain Sockets und Raw Sockets. Ermöglicht den Aufbau von Client- und Serveranwendungen auf Netzwerkebene – von einfachen Verbindungen bis hin zu nicht-blockierendem I/O mit Poll/Select-Multiplexing. Enthält außerdem Low-Level-Funktionen für ICMP-Ping, ARP-Paketgenerierung und Ethernet-Header-Erstellung.

Diese Unit bildet die Grundlage für alle höheren Netzwerkprotokolle in der Lyx-Standardbibliothek (HTTP, DNS, SMTP etc.).

import std.net.socket;

var listener: TCPListener := TCPListenerNew();
TCPListenerBind(listener, 8080);
TCPListenerListen(listener);

var conn: TCPConn := TCPListenerAccept(listener);
TCPConnWrite(conn, "Hello\n", 6);
TCPConnClose(conn);


Imports


Funktionen

Signatur Sichtbarkeit Beschreibung
BufferAlloc(size: int64): int64 pub Alloziert Speicherpuffer der Größe n
BufferFree(buf: int64, size: int64): int64 pub Gibt Speicherpuffer frei

Typen

TCPListener (struct)

Feld Typ
fd int64
Signatur Sichtbarkeit Beschreibung
TCPListenerNew(): TCPListener pub Erstellt neuen TCP-Listener-Socket
TCPListenerSetReuseAddr(listener: TCPListener): int64 pub Aktiviert SO_REUSEADDR am Listener
TCPListenerSetReusePort(listener: TCPListener): int64 pub Aktiviert SO_REUSEPORT am Listener
TCPListenerSetBacklog(listener: TCPListener, backlog: int64): int64 pub Setzt maximale Warteschlangenlänge
TCPListenerBind(listener: TCPListener, addr: int64): int64 pub Bindet Listener an Adressstruktur
TCPListenerBindTo(listener: TCPListener, ip: int64, port: int64): int64 pub Bindet Listener an IP und Port
TCPListenerListen(listener: TCPListener, backlog: int64): int64 pub Startet Verbindungsannahme
TCPListenerAccept(listener: TCPListener): TCPConn pub Nimmt eingehende TCP-Verbindung an
TCPListenerClose(listener: TCPListener) pub Schließt Listener-Socket

TCPConn (struct)

Feld Typ
fd int64
Signatur Sichtbarkeit Beschreibung
TCPConnRead(conn: TCPConn, buf: int64, n: int64): int64 pub Liest Bytes aus TCP-Verbindung
TCPConnWrite(conn: TCPConn, buf: int64, n: int64): int64 pub Schreibt Bytes in TCP-Verbindung
TCPConnClose(conn: TCPConn) pub Schließt TCP-Verbindung
TCPConnSetNodelay(conn: TCPConn, enable: bool): int64 pub Aktiviert oder deaktiviert TCP_NODELAY
TCPConnSetKeepAlive(conn: TCPConn, enable: bool): int64 pub Aktiviert oder deaktiviert Keep-Alive
TCPConnGetError(conn: TCPConn): int64 pub Liest Fehlercode der Verbindung
TCPConnSetRecvBuf(conn: TCPConn, size: int64): int64 pub Setzt Empfangspuffergröße
TCPConnSetSendBuf(conn: TCPConn, size: int64): int64 pub Setzt Sendepuffergröße
TCPConnSetReuseAddr(conn: TCPConn, enable: bool): int64 pub Aktiviert SO_REUSEADDR an Verbindung
TCPConnect(ip: int64, port: int64): TCPConn pub Stellt TCP-Verbindung zu IP:Port her
TCPConnectAddr(ipAddr: IPAddr): TCPConn pub Stellt TCP-Verbindung via IPAddr her

UDPSocket (struct)

Feld Typ
fd int64
Signatur Sichtbarkeit Beschreibung
UDPSocketNew(): UDPSocket pub Erstellt neuen UDP-Socket
UDPSocketBind(sock: UDPSocket, addr: int64): int64 pub Bindet UDP-Socket an Adressstruktur
UDPSocketBindTo(sock: UDPSocket, ip: int64, port: int64): int64 pub Bindet UDP-Socket an IP und Port
UDPSocketSendTo(sock: UDPSocket, buf: int64, n: int64, dest: int64): int64 pub Sendet Datagramm an Zieladresse
UDPSocketSendToAddr(sock: UDPSocket, buf: int64, n: int64, ip: int64, port: int64): int64 pub Sendet Datagramm an IP:Port
UDPSocketRecvFrom(sock: UDPSocket, buf: int64, n: int64, src: int64, addrlen: int64): int64 pub Empfängt Datagramm mit Absenderadresse
UDPSocketRecv(sock: UDPSocket, buf: int64, n: int64, senderIP: int64, senderPort: int64): int64 pub Empfängt Datagramm mit IP und Port
UDPSocketClose(sock: UDPSocket) pub Schließt UDP-Socket
UDPSocketSetReuseAddr(sock: UDPSocket): int64 pub Aktiviert SO_REUSEADDR am UDP-Socket
UDPSocketSetRecvBuf(sock: UDPSocket, size: int64): int64 pub Setzt Empfangspuffergröße
UDPSocketSetSendBuf(sock: UDPSocket, size: int64): int64 pub Setzt Sendepuffergröße
UDPSocketGetError(sock: UDPSocket): int64 pub Liest Fehlercode des UDP-Sockets

RawSocket (struct)

Feld Typ
fd int64
Signatur Sichtbarkeit Beschreibung
RawSocketNew(protocol: int64): RawSocket pub Erstellt Raw-Socket für Protokoll
RawSocketSendTo(sock: RawSocket, buf: int64, n: int64, destAddr: int64): int64 pub Sendet Rohpaket an Zieladresse
RawSocketRecvFrom(sock: RawSocket, buf: int64, n: int64, srcAddr: int64, addrlen: int64): int64 pub Empfängt Rohpaket mit Quelladresse
RawSocketClose(sock: RawSocket) pub Schließt Raw-Socket

ICMPHeader (struct)

Feld Typ
icmp_type uint8
icmp_code uint8
icmp_cksum uint16
icmp_id uint16
icmp_seq uint16
Signatur Sichtbarkeit Beschreibung
ICMPMakeEchoRequest(id: uint16, seq: uint16): ICMPHeader pub Erstellt ICMP-Echo-Request-Header
ICMPChecksum(data: int64, len: int64): uint16 pub Berechnet ICMP-Prüfsumme
ICMPPing(destIP: int64, id: uint16, seq: uint16, timeoutSecs: int64): int64 pub Sendet ICMP-Ping und wartet auf Antwort
EthernetHeaderCreate(dstMac: MacAddr, srcMac: MacAddr, ethertype: int64): EthernetHeader pub Erstellt Ethernet-Frame-Header
ARPMakeRequest(senderMac: MacAddr, senderIP: int64, targetIP: int64): ARPPacket pub Erstellt ARP-Request-Paket
ARPMakeReply(senderMac: MacAddr, senderIP: int64, targetMac: MacAddr, targetIP: int64): ARPPacket pub Erstellt ARP-Reply-Paket
ARPSerializePacket(eth: EthernetHeader, arp: ARPPacket, buf: int64): int64 pub Serialisiert ARP-Paket in Puffer
MacBroadcast(): MacAddr pub Gibt Broadcast-MAC-Adresse zurück
IPPack(a: uint8, b: uint8, c: uint8, d: uint8): int64 pub Packt vier Oktette zu IPv4-Adresse
IPUnpack(ip: int64): IPAddr pub Entpackt IPv4-Adresse in Oktette

Konstanten

Name Typ Wert Sichtbarkeit
F_GETFL int64 3 priv
F_SETFL int64 4 priv
O_NONBLOCK int64 2048 priv
EAGAIN int64 11 priv
EINPROGRESS int64 115 priv
EWOULDBLOCK int64 11 priv
SocketSetNonBlocking(fd: int64): int64 pub Setzt Socket auf nicht-blockierenden Modus
SocketSetBlocking(fd: int64): int64 pub Setzt Socket auf blockierenden Modus
SocketIsNonBlocking(fd: int64): bool pub Prüft ob Socket nicht-blockierend ist

PollFD (struct)

Feld Typ
fd int64
events int16
revents int16
POLLIN int16 1 priv
POLLOUT int16 4 priv
POLLERR int16 8 priv
POLLHUP int16 16 priv
POLLNVAL int32 32 priv

Externe Funktionen

Signatur Beschreibung
sys_poll(fds: int64, nfds: int64, timeout: int64): int64 Wartet auf Ereignisse mehrerer Deskriptoren
sys_select(nfds: int64, readfds: int64, writefds: int64, exceptfds: int64, timeout: int64): int64 Multiplext I/O auf mehrere Deskriptoren
Signatur Sichtbarkeit Beschreibung
SocketPoll(fds: int64, nfds: int64, timeout: int64): int64 pub Wartet auf Ereignisse via poll()
PollFDReadable(fds: int64, index: int64): bool pub Prüft ob Deskriptor lesbar ist
PollFDWritable(fds: int64, index: int64): bool pub Prüft ob Deskriptor schreibbar ist
PollFDError(fds: int64, index: int64): bool pub Prüft ob Deskriptor Fehler hat
FDSetZero(fdSet: int64) pub Leert fd_set-Struktur
FDSet(fd: int64, fdSet: int64) pub Fügt Deskriptor zu fd_set hinzu
FDClr(fd: int64, fdSet: int64) pub Entfernt Deskriptor aus fd_set
FDIsSet(fd: int64, fdSet: int64): bool pub Prüft ob Deskriptor in fd_set gesetzt

ConnectResult (struct)

Feld Typ
success bool
Signatur Sichtbarkeit Beschreibung
TCPConnectNonBlocking(ip: int64, port: int64, timeoutMs: int64): ConnectResult pub Verbindet nicht-blockierend mit Timeout
SocketCanRead(fd: int64, timeoutMs: int64): int64 pub Prüft Lesbarkeit innerhalb Timeout
SocketCanWrite(fd: int64, timeoutMs: int64): int64 pub Prüft Schreibbarkeit innerhalb Timeout
AF_UNIX int64 1 priv

UnixConn (struct)

Feld Typ
fd int64
Signatur Sichtbarkeit Beschreibung
UnixSocketNew(): UnixConn pub Erstellt neuen Unix-Domain-Socket
UnixSocketBind(sock: UnixConn, path: int64): int64 pub Bindet Unix-Socket an Dateipfad
UnixSocketListen(sock: UnixConn, backlog: int64): int64 pub Startet Verbindungsannahme am Socket
UnixSocketAccept(sock: UnixConn): UnixConn pub Nimmt Unix-Socket-Verbindung entgegen
UnixSocketConnect(path: int64): UnixConn pub Verbindet mit Unix-Domain-Socket-Pfad
UnixSocketRead(conn: UnixConn, buf: int64, n: int64): int64 pub Liest Bytes vom Unix-Socket
UnixSocketWrite(conn: UnixConn, buf: int64, n: int64): int64 pub Schreibt Bytes auf Unix-Socket
UnixSocketClose(conn: UnixConn) pub Schließt Unix-Socket
UnixSocketGetPeerCred(conn: UnixConn, pid: int64, uid: int64, gid: int64): int64 pub Liest Peer-Prozessinformationen aus
TCPConnectIPv6(ip6Hi: int64, ip6Lo: int64, port: int64): TCPConn pub Verbindet TCP über IPv6-Adresse
TCPListenerBindIPv6(listener: TCPListener, ip6Hi: int64, ip6Lo: int64, port: int64): int64 pub Bindet Listener an IPv6-Adresse
TCPListenerNewIPv6(): TCPListener pub Erstellt IPv6-TCP-Listener-Socket
UDPSocketNewIPv6(): UDPSocket pub Erstellt IPv6-UDP-Socket
UDPSocketSendToIPv6(sock: UDPSocket, buf: int64, n: int64, pub Sendet UDP-Datagramm via IPv6
UDPSocketBindIPv6(sock: UDPSocket, ip6Hi: int64, ip6Lo: int64, port: int64): int64 pub Bindet UDP-Socket an IPv6-Adresse