Sockets
Sockets.Sockets — ModuleSockets.connect — Methodconnect([host], port::Integer) -> TCPSocketVerbinde mit dem Host host über den Port port.
Sockets.connect — Methodconnect(path::AbstractString) -> PipeEndpointVerbinden Sie mit dem benannten Pipe / UNIX-Domain-Socket unter path.
Die Pfadlänge unter Unix ist auf irgendwo zwischen 92 und 108 Bytes begrenzt (vgl. man unix).
Sockets.listen — Methodlisten([addr, ]port::Integer; backlog::Integer=BACKLOG_DEFAULT) -> TCPServerHören Sie auf dem Port an der durch addr angegebenen Adresse. Standardmäßig hört dies nur auf localhost. Um auf allen Schnittstellen zu hören, übergeben Sie IPv4(0) oder IPv6(0) je nach Bedarf. backlog bestimmt, wie viele Verbindungen ausstehend sein können (die accept nicht aufgerufen haben), bevor der Server beginnt, sie abzulehnen. Der Standardwert von backlog beträgt 511.
Sockets.listen — Methodlisten(path::AbstractString) -> PipeServerErstellen und auf einem benannten Pipe / UNIX-Domain-Socket hören.
Die Pfadlänge unter Unix ist auf irgendwo zwischen 92 und 108 Bytes begrenzt (vgl. man unix).
Sockets.getaddrinfo — Functiongetaddrinfo(host::AbstractString, IPAddr) -> IPAddrErhält die erste IP-Adresse des host des angegebenen IPAddr-Typs. Verwendet die zugrunde liegende Implementierung von getaddrinfo des Betriebssystems, die möglicherweise eine DNS-Abfrage durchführt.
Beispiele
julia> getaddrinfo("localhost", IPv6)
ip"::1"
julia> getaddrinfo("localhost", IPv4)
ip"127.0.0.1"getaddrinfo(host::AbstractString) -> IPAddrErhält die erste verfügbare IP-Adresse von host, die entweder eine IPv4- oder IPv6-Adresse sein kann. Verwendet die zugrunde liegende getaddrinfo-Implementierung des Betriebssystems, die möglicherweise eine DNS-Abfrage durchführt.
Sockets.getipaddr — Functiongetipaddr() -> IPAddrHolen Sie sich eine IP-Adresse des lokalen Rechners, wobei IPv4 gegenüber IPv6 bevorzugt wird. Wirft eine Ausnahme, wenn keine Adressen verfügbar sind.
getipaddr(addr_type::Type{T}) where T<:IPAddr -> THolen Sie sich eine IP-Adresse des lokalen Rechners des angegebenen Typs. Wirft eine Ausnahme, wenn keine Adressen des angegebenen Typs verfügbar sind.
Diese Funktion ist ein Rückwärtskompatibilitäts-Wrapper um getipaddrs. Neue Anwendungen sollten stattdessen getipaddrs verwenden.
Beispiele
julia> getipaddr()
ip"192.168.1.28"
julia> getipaddr(IPv6)
ip"fe80::9731:35af:e1c5:6e49"Siehe auch getipaddrs.
Sockets.getipaddrs — Functiongetipaddrs(addr_type::Type{T}=IPAddr; loopback::Bool=false) where T<:IPAddr -> Vector{T}Holen Sie sich die IP-Adressen des lokalen Computers.
Wenn der optionale Parameter addr_type auf IPv4 oder IPv6 gesetzt wird, werden nur Adressen dieses Typs zurückgegeben.
Das Schlüsselwortargument loopback bestimmt, ob Loopback-Adressen (z. B. ip"127.0.0.1", ip"::1") einbezogen werden.
Diese Funktion ist seit Julia 1.2 verfügbar.
Beispiele
julia> getipaddrs()
5-element Array{IPAddr,1}:
ip"198.51.100.17"
ip"203.0.113.2"
ip"2001:db8:8:4:445e:5fff:fe5d:5500"
ip"2001:db8:8:4:c164:402e:7e3c:3668"
ip"fe80::445e:5fff:fe5d:5500"
julia> getipaddrs(IPv6)
3-element Array{IPv6,1}:
ip"2001:db8:8:4:445e:5fff:fe5d:5500"
ip"2001:db8:8:4:c164:402e:7e3c:3668"
ip"fe80::445e:5fff:fe5d:5500"Siehe auch islinklocaladdr.
Sockets.islinklocaladdr — Functionislinklocaladdr(addr::IPAddr)Überprüft, ob eine IP-Adresse eine Link- lokale Adresse ist. Link-lokale Adressen sind nicht garantiert, über ihr Netzwerksegment hinaus einzigartig zu sein, daher leiten Router sie nicht weiter. Link-lokale Adressen stammen aus den Adressblöcken 169.254.0.0/16 oder fe80::/10.
Beispiele
filter(!islinklocaladdr, getipaddrs())Sockets.getalladdrinfo — Functiongetalladdrinfo(host::AbstractString) -> Vector{IPAddr}Erhält alle IP-Adressen des host. Verwendet die zugrunde liegende getaddrinfo-Implementierung des Betriebssystems, die möglicherweise eine DNS-Abfrage durchführt.
Beispiele
julia> getalladdrinfo("google.com")
2-element Array{IPAddr,1}:
ip"172.217.6.174"
ip"2607:f8b0:4000:804::200e"Sockets.DNSError — TypeDNSErrorDer Typ der Ausnahme, die ausgelöst wird, wenn ein Fehler bei der DNS-Abfrage auftritt. Das Feld host gibt die Host-URL-Zeichenfolge an. Das Feld code gibt den Fehlercode basierend auf libuv an.
Sockets.getnameinfo — Functiongetnameinfo(host::IPAddr) -> StringFührt eine Rückwärtssuche für die IP-Adresse durch, um einen Hostnamen und einen Dienst unter Verwendung der zugrunde liegenden getnameinfo-Implementierung des Betriebssystems zurückzugeben.
Beispiele
julia> getnameinfo(IPv4("8.8.8.8"))
"google-public-dns-a.google.com"Sockets.getsockname — Functiongetsockname(sock::Union{TCPServer, TCPSocket}) -> (IPAddr, UInt16)Holen Sie sich die IP-Adresse und den Port, an den der gegebene Socket gebunden ist.
Sockets.getpeername — Functiongetpeername(sock::TCPSocket) -> (IPAddr, UInt16)Holen Sie sich die IP-Adresse und den Port des Remote-Endpunkts, mit dem der gegebene Socket verbunden ist. Gültig nur für verbundene TCP-Sockets.
Sockets.IPAddr — TypeSockets.IPv4 — TypeIPv4(host::Integer) -> IPv4Gibt ein IPv4-Objekt von der IP-Adresse host zurück, die als Integer formatiert ist.
Beispiele
julia> IPv4(3223256218)
ip"192.30.252.154"IPv4(str::AbstractString) -> IPv4Analysiere einen IPv4-Adressstring in ein IPv4-Objekt.
Beispiele
julia> IPv4("127.0.0.1")
ip"127.0.0.1"Sockets.IPv6 — TypeIPv6(host::Integer) -> IPv6Gibt ein IPv6-Objekt von der IP-Adresse host zurück, die als Integer formatiert ist.
Beispiele
julia> IPv6(3223256218)
ip"::c01e:fc9a"IPv6(str::AbstractString) -> IPv6Analysiere einen IPv6-Adressen-String in ein IPv6-Objekt.
Beispiele
julia> IPv6("::1")
ip"::1"Sockets.@ip_str — Macro@ip_str str -> IPAddrAnalysiere str als eine IP-Adresse.
Beispiele
julia> ip"127.0.0.1"
ip"127.0.0.1"
julia> @ip_str "2001:db8:0:0:0:0:2:1"
ip"2001:db8::2:1"Sockets.TCPSocket — TypeTCPSocket(; delay=true)Öffnen Sie einen TCP-Socket mit libuv. Wenn delay wahr ist, verzögert libuv die Erstellung des Dateideskriptors des Sockets bis zum ersten bind Aufruf. TCPSocket hat verschiedene Felder, um den Zustand des Sockets sowie seine Sende-/Empfangspuffer anzuzeigen.
Sockets.UDPSocket — TypeUDPSocket()Öffnen Sie einen UDP-Socket mit libuv. UDPSocket hat verschiedene Felder, um den Zustand des Sockets anzuzeigen.
Sockets.accept — Functionaccept(server[, client])Akzeptiert eine Verbindung auf dem angegebenen Server und gibt eine Verbindung zum Client zurück. Ein nicht initialisierter Client-Stream kann bereitgestellt werden, in diesem Fall wird er anstelle der Erstellung eines neuen Streams verwendet.
Sockets.listenany — Functionlistenany([host::IPAddr,] port_hint; backlog::Integer=BACKLOG_DEFAULT) -> (UInt16, TCPServer)Erstellt einen TCPServer auf einem beliebigen Port, wobei der Hinweis als Ausgangspunkt verwendet wird. Gibt ein Tupel des tatsächlichen Ports zurück, auf dem der Server erstellt wurde, und den Server selbst. Das Argument backlog definiert die maximale Länge, die die Warteschlange ausstehender Verbindungen für sockfd erreichen kann.
Base.bind — Functionbind(socket::Union{TCPServer, UDPSocket, TCPSocket}, host::IPAddr, port::Integer; ipv6only=false, reuseaddr=false, kws...)Binde socket an den angegebenen host:port. Beachten Sie, dass 0.0.0.0 auf allen Geräten lauscht.
- Der Parameter
ipv6onlydeaktiviert den Dual-Stack-Modus. Wennipv6only=true, wird nur ein IPv6-Stack erstellt. - Wenn
reuseaddr=true, können mehrere Threads oder Prozesse an dieselbe Adresse binden, ohne einen Fehler zu verursachen, wenn sie allereuseaddr=truesetzen, aber nur der letzte, der bindet, erhält den gesamten Verkehr.
bind(chnl::Channel, task::Task)Assoziiere die Lebensdauer von chnl mit einer Aufgabe. Channel chnl wird automatisch geschlossen, wenn die Aufgabe endet. Jede nicht abgefangene Ausnahme in der Aufgabe wird an alle Wartenden auf chnl weitergegeben.
Das chnl-Objekt kann unabhängig vom Abschluss der Aufgabe explizit geschlossen werden. Beendete Aufgaben haben keinen Einfluss auf bereits geschlossene Channel-Objekte.
Wenn ein Kanal an mehrere Aufgaben gebunden ist, wird der erste, der beendet wird, den Kanal schließen. Wenn mehrere Kanäle an dieselbe Aufgabe gebunden sind, wird das Beenden der Aufgabe alle gebundenen Kanäle schließen.
Beispiele
julia> c = Channel(0);
julia> task = @async foreach(i->put!(c, i), 1:4);
julia> bind(c,task);
julia> for i in c
@show i
end;
i = 1
i = 2
i = 3
i = 4
julia> isopen(c)
falsejulia> c = Channel(0);
julia> task = @async (put!(c, 1); error("foo"));
julia> bind(c, task);
julia> take!(c)
1
julia> put!(c, 1);
ERROR: TaskFailedException
Stacktrace:
[...]
nested task error: foo
[...]Sockets.send — Functionsend(socket::UDPSocket, host::IPAddr, port::Integer, msg)Sende msg über socket an host:port.
Sockets.recv — Functionrecv(socket::UDPSocket)Liest ein UDP-Paket vom angegebenen Socket und gibt die empfangenen Bytes zurück. Dieser Aufruf blockiert.
Sockets.recvfrom — Functionrecvfrom(socket::UDPSocket) -> (host_port, data)Lese ein UDP-Paket vom angegebenen Socket und gebe ein Tupel von (host_port, data) zurück, wobei host_port eine InetAddr{IPv4} oder InetAddr{IPv6} sein wird, je nach Bedarf.
Vor Julia-Version 1.3 war der erste zurückgegebene Wert eine Adresse (IPAddr). In Version 1.3 wurde er in eine InetAddr geändert.
Sockets.setopt — Functionsetopt(sock::UDPSocket; multicast_loop=nothing, multicast_ttl=nothing, enable_broadcast=nothing, ttl=nothing)Setzen Sie die UDP-Socket-Optionen.
multicast_loop: Loopback für Multicast-Pakete (Standard:true).multicast_ttl: TTL für Multicast-Pakete (Standard:nothing).enable_broadcast: Flag muss auftruegesetzt werden, wenn der Socket für Broadcast-Nachrichten verwendet wird, andernfalls gibt das UDP-System einen Zugriffsfehler zurück (Standard:false).ttl: Time-to-live von Paketen, die über den Socket gesendet werden (Standard:nothing).
Sockets.nagle — Functionnagle(socket::Union{TCPServer, TCPSocket}, enable::Bool)Nagels Algorithmus bündelt mehrere kleine TCP-Pakete zu größeren. Dies kann den Durchsatz verbessern, aber die Latenz verschlechtern. Nagels Algorithmus ist standardmäßig aktiviert. Diese Funktion legt fest, ob Nagels Algorithmus auf einem bestimmten TCP-Server oder Socket aktiv ist. Die entgegengesetzte Option wird in anderen Sprachen TCP_NODELAY genannt.
Diese Funktion erfordert Julia 1.3 oder höher.
Sockets.quickack — Functionquickack(socket::Union{TCPServer, TCPSocket}, enable::Bool)Auf Linux-Systemen ist TCP_QUICKACK auf socket deaktiviert oder aktiviert.