Sockets

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

Conéctese al host host en el puerto port.

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

Conéctese al pipe nombrado / socket de dominio UNIX en path.

Note

La longitud de la ruta en Unix está limitada a algún lugar entre 92 y 108 bytes (cf. man unix).

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

Escucha en el puerto en la dirección especificada por addr. Por defecto, esto escucha solo en localhost. Para escuchar en todas las interfaces, pasa IPv4(0) o IPv6(0) según corresponda. backlog determina cuántas conexiones pueden estar pendientes (sin haber llamado a accept) antes de que el servidor comience a rechazarlas. El valor predeterminado de backlog es 511.

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

Crea y escucha en un pipe nombrado / socket de dominio UNIX.

Note

La longitud de la ruta en Unix está limitada a algún lugar entre 92 y 108 bytes (cf. man unix).

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

Obtiene la primera dirección IP del host del tipo IPAddr especificado. Utiliza la implementación subyacente de getaddrinfo del sistema operativo, que puede realizar una búsqueda DNS.

Ejemplos

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

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

Obtiene la primera dirección IP disponible de host, que puede ser una dirección IPv4 o IPv6. Utiliza la implementación subyacente de getaddrinfo del sistema operativo, que puede realizar una búsqueda DNS.

source
Sockets.getipaddrFunction
getipaddr() -> IPAddr

Obtiene una dirección IP de la máquina local, prefiriendo IPv4 sobre IPv6. Lanza una excepción si no hay direcciones disponibles.

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

Obtiene una dirección IP de la máquina local del tipo especificado. Lanza una excepción si no hay direcciones del tipo especificado disponibles.

Esta función es un envoltorio de compatibilidad hacia atrás alrededor de getipaddrs. Las nuevas aplicaciones deben usar getipaddrs en su lugar.

Ejemplos

julia> getipaddr()
ip"192.168.1.28"

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

Ver también getipaddrs.

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

Obtiene las direcciones IP de la máquina local.

Configurar el parámetro opcional addr_type a IPv4 o IPv6 hace que solo se devuelvan direcciones de ese tipo.

El argumento clave loopback determina si se incluyen las direcciones de loopback (por ejemplo, ip"127.0.0.1", ip"::1").

Julia 1.2

Esta función está disponible a partir de Julia 1.2.

Ejemplos

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"

Ver también islinklocaladdr.

source
Sockets.islinklocaladdrFunction
islinklocaladdr(addr::IPAddr)

Prueba si una dirección IP es una dirección local de enlace. Las direcciones locales de enlace no garantizan ser únicas más allá de su segmento de red, por lo tanto, los enrutadores no las reenvían. Las direcciones locales de enlace provienen de los bloques de direcciones 169.254.0.0/16 o fe80::/10.

Ejemplos

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

Obtiene todas las direcciones IP del host. Utiliza la implementación subyacente de getaddrinfo del sistema operativo, que puede realizar una búsqueda DNS.

Ejemplos

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

El tipo de excepción lanzada cuando ocurre un error en la búsqueda DNS. El campo host indica la cadena de URL del host. El campo code indica el código de error basado en libuv.

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

Realiza una búsqueda inversa para la dirección IP para devolver un nombre de host y un servicio utilizando la implementación subyacente getnameinfo del sistema operativo.

Ejemplos

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

Obtiene la dirección IP y el puerto al que está vinculado el socket dado.

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

Obtiene la dirección IP y el puerto del extremo remoto al que está conectado el socket dado. Válido solo para sockets TCP conectados.

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

Devuelve un objeto IPv4 a partir de la dirección IP host formateada como un Integer.

Ejemplos

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

Analiza una cadena de dirección IPv4 en un objeto IPv4.

Ejemplos

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

Devuelve un objeto IPv6 a partir de la dirección IP host formateada como un Integer.

Ejemplos

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

Analiza una cadena de dirección IPv6 en un objeto IPv6.

Ejemplos

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

Analiza str como una dirección IP.

Ejemplos

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)

Abre un socket TCP usando libuv. Si delay es verdadero, libuv retrasa la creación del descriptor de archivo del socket hasta la primera llamada a bind. TCPSocket tiene varios campos para denotar el estado del socket, así como sus buffers de envío/recepción.

source
Sockets.UDPSocketType
UDPSocket()

Abre un socket UDP utilizando libuv. UDPSocket tiene varios campos para denotar el estado del socket.

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

Acepta una conexión en el servidor dado y devuelve una conexión al cliente. Se puede proporcionar un flujo de cliente no inicializado, en cuyo caso se utilizará en lugar de crear un nuevo flujo.

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

Crea un TCPServer en cualquier puerto, utilizando hint como punto de partida. Devuelve una tupla del puerto real en el que se creó el servidor y el servidor mismo. El argumento backlog define la longitud máxima a la que puede crecer la cola de conexiones pendientes para sockfd.

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

Vincula socket al host:port dado. Ten en cuenta que 0.0.0.0 escuchará en todos los dispositivos.

  • El parámetro ipv6only desactiva el modo de pila dual. Si ipv6only=true, solo se crea una pila IPv6.
  • Si reuseaddr=true, múltiples hilos o procesos pueden vincularse a la misma dirección sin error si todos establecen reuseaddr=true, pero solo el último en vincularse recibirá tráfico.
source
bind(chnl::Channel, task::Task)

Asocia la duración de chnl con una tarea. Channel chnl se cierra automáticamente cuando la tarea termina. Cualquier excepción no capturada en la tarea se propaga a todos los que están a la espera en chnl.

El objeto chnl se puede cerrar explícitamente independientemente de la terminación de la tarea. Las tareas que terminan no tienen efecto en los objetos Channel que ya están cerrados.

Cuando un canal está vinculado a múltiples tareas, la primera tarea que termine cerrará el canal. Cuando múltiples canales están vinculados a la misma tarea, la terminación de la tarea cerrará todos los canales vinculados.

Ejemplos

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)

Envía msg a través de socket a host:port.

source
Sockets.recvFunction
recv(socket::UDPSocket)

Lee un paquete UDP del socket especificado y devuelve los bytes recibidos. Esta llamada bloquea.

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

Lee un paquete UDP del socket especificado, devolviendo una tupla de (host_port, data), donde host_port será un InetAddr{IPv4} o InetAddr{IPv6}, según corresponda.

Julia 1.3

Antes de la versión 1.3 de Julia, el primer valor devuelto era una dirección (IPAddr). En la versión 1.3 se cambió a un InetAddr.

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

Establecer opciones del socket UDP.

  • multicast_loop: bucle de retorno para paquetes multicast (predeterminado: true).
  • multicast_ttl: TTL para paquetes multicast (predeterminado: nothing).
  • enable_broadcast: la bandera debe establecerse en true si el socket se utilizará para mensajes de difusión, de lo contrario, el sistema UDP devolverá un error de acceso (predeterminado: false).
  • ttl: Tiempo de vida de los paquetes enviados por el socket (predeterminado: nothing).
source
Sockets.nagleFunction
nagle(socket::Union{TCPServer, TCPSocket}, enable::Bool)

El algoritmo de Nagle agrupa múltiples paquetes TCP pequeños en paquetes más grandes. Esto puede mejorar el rendimiento pero empeorar la latencia. El algoritmo de Nagle está habilitado por defecto. Esta función establece si el algoritmo de Nagle está activo en un servidor TCP o socket dado. La opción opuesta se llama TCP_NODELAY en otros lenguajes.

Julia 1.3

Esta función requiere Julia 1.3 o posterior.

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

En sistemas Linux, el TCP_QUICKACK está deshabilitado o habilitado en socket.

source