std.net.syscalls
Portable POSIX-Wrapper für die grundlegenden Socket-Systemaufrufe: socket, bind, listen, accept, connect, read, write, close, shutdown, setsockopt, getsockopt und fcntl. Diese Schicht abstrahiert plattformspezifische Unterschiede und bildet die unterste Ebene der Netzwerkimplementierung in Lyx.
Normalerweise nicht direkt verwendet — std.net.socket und höhere Units setzen darauf auf und bieten eine komfortablere, typsichere API.
Funktionen
| Signatur | Sichtbarkeit | Beschreibung |
|---|---|---|
Socket(domain: int64, socktype: int64, protocol: int64): int64 | pub | Erstellt neuen Socket-Dateideskriptor |
Bind(sockfd: int64, addr: int64, addrlen: int64): int64 | pub | Bindet Socket an lokale Adresse |
Listen(sockfd: int64, backlog: int64): int64 | pub | Versetzt Socket in Wartezustand |
Accept(sockfd: int64, addr: int64, addrlen: int64): int64 | pub | Nimmt eingehende Verbindung entgegen |
NetConnect(sockfd: int64, addr: int64, addrlen: int64): int64 | pub | Baut TCP-Verbindung zu Zieladresse auf |
RecvFrom(sockfd: int64, buf: int64, len: int64, flags: int64, src_addr: int64, addrlen: int64): int64 | pub | Empfängt Datagramm mit Absenderadresse |
SendTo(sockfd: int64, buf: int64, len: int64, flags: int64, dest_addr: int64, addrlen: int64): int64 | pub | Sendet Datagramm an Zieladresse |
NetClose(fd: int64): int64 | pub | Schließt Dateideskriptor |
SetSockOpt(sockfd: int64, level: int64, optname: int64, optval: int64, optlen: int64): int64 | pub | Setzt Socket-Option |
GetSockOpt(sockfd: int64, level: int64, optname: int64, optval: int64, addrlen: int64): int64 | pub | Liest Socket-Option aus |
Fcntl(fd: int64, cmd: int64, arg: int64): int64 | pub | Steuert Dateideskriptor-Eigenschaften |
Shutdown(sockfd: int64, how: int64): int64 | pub | Beendet Sende- oder Empfangsrichtung |
NetRead(fd: int64, buf: int64, count: int64): int64 | pub | Liest Bytes vom Dateideskriptor |
NetWrite(fd: int64, buf: int64, count: int64): int64 | pub | Schreibt Bytes auf Dateideskriptor |
I/O-Multiplexing
| Signatur | Beschreibung |
|---|---|
Poll(fds: int64, nfds: int64, timeoutMs: int64): int64 | wartet auf Ereignisse an nfds Deskriptoren; Zeitangabe in Millisekunden |
Select(nfds: int64, readfds: int64, writefds: int64, exceptfds: int64, timeout: int64): int64 | älteres Gegenstück mit drei Deskriptormengen |
Beide Wrapper fehlten lange, obwohl die Unit sie in ihrer Beschreibung führte — Beispiele riefen sie auf, ohne dass es sie gab. Inzwischen sind sie vorhanden.
Für mehr als eine Handvoll Deskriptoren ist std.net.epoll die bessere Wahl: Poll und Select übergeben bei jedem Aufruf die vollständige Liste an den Kernel, epoll meldet nur die Änderungen.
