Sockets

Sockets.connectMethod
connect([hôte], port::Integer) -> TCPSocket

Connectez-vous à l'hôte hôte sur le port port.

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

Se connecter au pipe nommé / socket de domaine UNIX à path.

Note

La longueur du chemin sur Unix est limitée à quelque part entre 92 et 108 octets (cf. man unix).

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

Écoute sur le port à l'adresse spécifiée par addr. Par défaut, cela écoute uniquement sur localhost. Pour écouter sur toutes les interfaces, passez IPv4(0) ou IPv6(0) selon le cas. backlog détermine combien de connexions peuvent être en attente (n'ayant pas appelé accept) avant que le serveur ne commence à les rejeter. La valeur par défaut de backlog est 511.

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

Créer et écouter sur un pipe nommé / socket de domaine UNIX.

Note

La longueur du chemin sur Unix est limitée à quelque part entre 92 et 108 octets (cf. man unix).

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

Obtient la première adresse IP de l'hôte du type IPAddr spécifié. Utilise l'implémentation getaddrinfo sous-jacente du système d'exploitation, qui peut effectuer une recherche DNS.

Exemples

julia> getaddrinfo("localhost", IPv6)
ip"::1"

julia> getaddrinfo("localhost", IPv4)
ip"127.0.0.1"
source
getaddrinfo(host::AbstractString) -> IPAddr

Obtient la première adresse IP disponible de host, qui peut être soit une adresse IPv4 soit une adresse IPv6. Utilise l'implémentation getaddrinfo sous-jacente du système d'exploitation, qui peut effectuer une recherche DNS.

source
Sockets.getipaddrFunction
getipaddr() -> IPAddr

Obtenez une adresse IP de la machine locale, en préférant IPv4 à IPv6. Lève une exception si aucune adresse n'est disponible.

getipaddr(addr_type::Type{T}) where T<:IPAddr -> T

Obtenez une adresse IP de la machine locale du type spécifié. Lève une exception si aucune adresse du type spécifié n'est disponible.

Cette fonction est un wrapper de compatibilité ascendante autour de getipaddrs. Les nouvelles applications devraient utiliser getipaddrs à la place.

Exemples

julia> getipaddr()
ip"192.168.1.28"

julia> getipaddr(IPv6)
ip"fe80::9731:35af:e1c5:6e49"

Voir aussi getipaddrs.

source
Sockets.getipaddrsFunction
getipaddrs(addr_type::Type{T}=IPAddr; loopback::Bool=false) where T<:IPAddr -> Vector{T}

Obtenez les adresses IP de la machine locale.

Définir le paramètre optionnel addr_type sur IPv4 ou IPv6 entraîne le retour uniquement des adresses de ce type.

L'argument clé loopback détermine si les adresses de boucle (par exemple ip"127.0.0.1", ip"::1") sont incluses.

Julia 1.2

Cette fonction est disponible depuis Julia 1.2.

Exemples

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"

Voir aussi islinklocaladdr.

source
Sockets.islinklocaladdrFunction
islinklocaladdr(addr::IPAddr)

Teste si une adresse IP est une adresse locale de lien. Les adresses locales de lien ne sont pas garanties d'être uniques au-delà de leur segment de réseau, par conséquent, les routeurs ne les transmettent pas. Les adresses locales de lien proviennent des blocs d'adresses 169.254.0.0/16 ou fe80::/10.

Exemples

filter(!islinklocaladdr, getipaddrs())
source
Sockets.getalladdrinfoFunction
getalladdrinfo(host::AbstractString) -> Vector{IPAddr}

Obtient toutes les adresses IP du host. Utilise l'implémentation sous-jacente de getaddrinfo du système d'exploitation, qui peut effectuer une recherche DNS.

Exemples

julia> getalladdrinfo("google.com")
2-element Array{IPAddr,1}:
 ip"172.217.6.174"
 ip"2607:f8b0:4000:804::200e"
source
Sockets.DNSErrorType
DNSError

Le type d'exception lancé lorsqu'une erreur se produit lors de la recherche DNS. Le champ host indique la chaîne d'URL de l'hôte. Le champ code indique le code d'erreur basé sur libuv.

source
Sockets.getnameinfoFunction
getnameinfo(hôte::IPAddr) -> String

Effectue une recherche inversée pour l'adresse IP afin de retourner un nom d'hôte et un service en utilisant l'implémentation sous-jacente getnameinfo du système d'exploitation.

Exemples

julia> getnameinfo(IPv4("8.8.8.8"))
"google-public-dns-a.google.com"
source
Sockets.getsocknameFunction
getsockname(sock::Union{TCPServer, TCPSocket}) -> (IPAddr, UInt16)

Obtenez l'adresse IP et le port auxquels le socket donné est lié.

source
Sockets.getpeernameFunction
getpeername(sock::TCPSocket) -> (IPAddr, UInt16)

Obtenez l'adresse IP et le port du point de terminaison distant auquel le socket donné est connecté. Valide uniquement pour les sockets TCP connectés.

source
Sockets.IPv4Type
IPv4(hôte::Integer) -> IPv4

Retourne un objet IPv4 à partir de l'adresse IP hôte formatée comme un Integer.

Exemples

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

Analyse une chaîne d'adresse IPv4 en un objet IPv4.

Exemples

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

Retourne un objet IPv6 à partir de l'adresse IP hôte formatée comme un Integer.

Exemples

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

Analyse une chaîne d'adresse IPv6 en un objet IPv6.

Exemples

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

Analyse str comme une adresse IP.

Exemples

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)

Ouvre un socket TCP en utilisant libuv. Si delay est vrai, libuv retarde la création du descripteur de fichier du socket jusqu'à la première appel de bind. TCPSocket a divers champs pour indiquer l'état du socket ainsi que ses tampons d'envoi/réception.

source
Sockets.UDPSocketType
UDPSocket()

Ouvrez un socket UDP en utilisant libuv. UDPSocket a divers champs pour indiquer l'état du socket.

source
Sockets.acceptFunction
accept(server[, client])

Accepte une connexion sur le serveur donné et renvoie une connexion au client. Un flux client non initialisé peut être fourni, auquel cas il sera utilisé au lieu de créer un nouveau flux.

source
Sockets.listenanyFunction
listenany([host::IPAddr,] port_hint; backlog::Integer=BACKLOG_DEFAULT) -> (UInt16, TCPServer)

Crée un TCPServer sur n'importe quel port, en utilisant l'indice comme point de départ. Renvoie un tuple du port réel sur lequel le serveur a été créé et le serveur lui-même. L'argument backlog définit la longueur maximale à laquelle la file d'attente des connexions en attente pour sockfd peut croître.

source
Base.bindFunction
bind(socket::Union{TCPServer, UDPSocket, TCPSocket}, host::IPAddr, port::Integer; ipv6only=false, reuseaddr=false, kws...)

Liez socket à l'hôte:port donné. Notez que 0.0.0.0 écoutera sur tous les appareils.

  • Le paramètre ipv6only désactive le mode double pile. Si ipv6only=true, seule une pile IPv6 est créée.
  • Si reuseaddr=true, plusieurs threads ou processus peuvent se lier à la même adresse sans erreur s'ils définissent tous reuseaddr=true, mais seul le dernier à se lier recevra du trafic.
source
bind(chnl::Channel, task::Task)

Associe la durée de vie de chnl à une tâche. Le Channel chnl est automatiquement fermé lorsque la tâche se termine. Toute exception non interceptée dans la tâche est propagée à tous les attendus sur chnl.

L'objet chnl peut être explicitement fermé indépendamment de la terminaison de la tâche. Les tâches terminées n'ont aucun effet sur les objets Channel déjà fermés.

Lorsqu'un canal est lié à plusieurs tâches, la première tâche à se terminer fermera le canal. Lorsque plusieurs canaux sont liés à la même tâche, la terminaison de la tâche fermera tous les canaux liés.

Exemples

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)

Envoyer msg via socket à host:port.

source
Sockets.recvFunction
recv(socket::UDPSocket)

Lire un paquet UDP à partir du socket spécifié et retourner les octets reçus. Cet appel bloque.

source
Sockets.recvfromFunction
recvfrom(socket::UDPSocket) -> (host_port, data)

Lire un paquet UDP à partir du socket spécifié, retournant un tuple de (host_port, data), où host_port sera un InetAddr{IPv4} ou InetAddr{IPv6}, selon le cas.

Julia 1.3

Avant la version 1.3 de Julia, la première valeur retournée était une adresse (IPAddr). Dans la version 1.3, elle a été changée en InetAddr.

source
Sockets.setoptFunction
setopt(sock::UDPSocket; multicast_loop=nothing, multicast_ttl=nothing, enable_broadcast=nothing, ttl=nothing)

Définir les options du socket UDP.

  • multicast_loop: boucle pour les paquets multicast (par défaut : true).
  • multicast_ttl: TTL pour les paquets multicast (par défaut : nothing).
  • enable_broadcast: le drapeau doit être défini sur true si le socket sera utilisé pour des messages de diffusion, sinon le système UDP renverra une erreur d'accès (par défaut : false).
  • ttl: Durée de vie des paquets envoyés sur le socket (par défaut : nothing).
source
Sockets.nagleFunction
nagle(socket::Union{TCPServer, TCPSocket}, enable::Bool)

L'algorithme de Nagle regroupe plusieurs petits paquets TCP en paquets plus grands. Cela peut améliorer le débit mais aggraver la latence. L'algorithme de Nagle est activé par défaut. Cette fonction définit si l'algorithme de Nagle est actif sur un serveur TCP ou un socket donné. L'option opposée est appelée TCP_NODELAY dans d'autres langages.

Julia 1.3

Cette fonction nécessite Julia 1.3 ou une version ultérieure.

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

Sur les systèmes Linux, le TCP_QUICKACK est désactivé ou activé sur socket.

source