Sockets

Sockets.connectMethod
connect([host], port::Integer) -> TCPSocket

Verbinde mit dem Host host über den Port port.

source
Sockets.connectMethod
connect(path::AbstractString) -> PipeEndpoint

Verbinden Sie mit dem benannten Pipe / UNIX-Domain-Socket unter path.

Note

Die Pfadlänge unter Unix ist auf irgendwo zwischen 92 und 108 Bytes begrenzt (vgl. man unix).

source
Sockets.listenMethod
listen([addr, ]port::Integer; backlog::Integer=BACKLOG_DEFAULT) -> TCPServer

Hö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.

source
Sockets.listenMethod
listen(path::AbstractString) -> PipeServer

Erstellen und auf einem benannten Pipe / UNIX-Domain-Socket hören.

Note

Die Pfadlänge unter Unix ist auf irgendwo zwischen 92 und 108 Bytes begrenzt (vgl. man unix).

source
Sockets.getaddrinfoFunction
getaddrinfo(host::AbstractString, IPAddr) -> IPAddr

Erhä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"
source
getaddrinfo(host::AbstractString) -> IPAddr

Erhä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.

source
Sockets.getipaddrFunction
getipaddr() -> IPAddr

Holen 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 -> T

Holen 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.

source
Sockets.getipaddrsFunction
getipaddrs(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.

Julia 1.2

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.

source
Sockets.islinklocaladdrFunction
islinklocaladdr(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())
source
Sockets.getalladdrinfoFunction
getalladdrinfo(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"
source
Sockets.DNSErrorType
DNSError

Der 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.

source
Sockets.getnameinfoFunction
getnameinfo(host::IPAddr) -> String

Fü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"
source
Sockets.getsocknameFunction
getsockname(sock::Union{TCPServer, TCPSocket}) -> (IPAddr, UInt16)

Holen Sie sich die IP-Adresse und den Port, an den der gegebene Socket gebunden ist.

source
Sockets.getpeernameFunction
getpeername(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.

source
Sockets.IPv4Type
IPv4(host::Integer) -> IPv4

Gibt ein IPv4-Objekt von der IP-Adresse host zurück, die als Integer formatiert ist.

Beispiele

julia> IPv4(3223256218)
ip"192.30.252.154"
source
IPv4(str::AbstractString) -> IPv4

Analysiere einen IPv4-Adressstring in ein IPv4-Objekt.

Beispiele

julia> IPv4("127.0.0.1")
ip"127.0.0.1"
source
Sockets.IPv6Type
IPv6(host::Integer) -> IPv6

Gibt ein IPv6-Objekt von der IP-Adresse host zurück, die als Integer formatiert ist.

Beispiele

julia> IPv6(3223256218)
ip"::c01e:fc9a"
source
IPv6(str::AbstractString) -> IPv6

Analysiere einen IPv6-Adressen-String in ein IPv6-Objekt.

Beispiele

julia> IPv6("::1")
ip"::1"
source
Sockets.@ip_strMacro
@ip_str str -> IPAddr

Analysiere 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"
source
Sockets.TCPSocketType
TCPSocket(; 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.

source
Sockets.UDPSocketType
UDPSocket()

Öffnen Sie einen UDP-Socket mit libuv. UDPSocket hat verschiedene Felder, um den Zustand des Sockets anzuzeigen.

source
Sockets.acceptFunction
accept(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.

source
Sockets.listenanyFunction
listenany([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.

source
Base.bindFunction
bind(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 ipv6only deaktiviert den Dual-Stack-Modus. Wenn ipv6only=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 alle reuseaddr=true setzen, aber nur der letzte, der bindet, erhält den gesamten Verkehr.
source
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)
false
julia> 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
[...]
source
Sockets.sendFunction
send(socket::UDPSocket, host::IPAddr, port::Integer, msg)

Sende msg über socket an host:port.

source
Sockets.recvFunction
recv(socket::UDPSocket)

Liest ein UDP-Paket vom angegebenen Socket und gibt die empfangenen Bytes zurück. Dieser Aufruf blockiert.

source
Sockets.recvfromFunction
recvfrom(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.

Julia 1.3

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.

source
Sockets.setoptFunction
setopt(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 auf true gesetzt 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).
source
Sockets.nagleFunction
nagle(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.

Julia 1.3

Diese Funktion erfordert Julia 1.3 oder höher.

source
Sockets.quickackFunction
quickack(socket::Union{TCPServer, TCPSocket}, enable::Bool)

Auf Linux-Systemen ist TCP_QUICKACK auf socket deaktiviert oder aktiviert.

source