====== 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 [[lyx_-_programmiersprache:units:net:epoll|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.