Sockets
Sockets.Sockets — ModuleSockets.connect — Methodconnect([host], port::Integer) -> TCPSocketConéctese al host host en el puerto port.
Sockets.connect — Methodconnect(path::AbstractString) -> PipeEndpointConéctese al pipe nombrado / socket de dominio UNIX en path.
La longitud de la ruta en Unix está limitada a algún lugar entre 92 y 108 bytes (cf. man unix).
Sockets.listen — Methodlisten([addr, ]port::Integer; backlog::Integer=BACKLOG_DEFAULT) -> TCPServerEscucha 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.
Sockets.listen — Methodlisten(path::AbstractString) -> PipeServerCrea y escucha en un pipe nombrado / socket de dominio UNIX.
La longitud de la ruta en Unix está limitada a algún lugar entre 92 y 108 bytes (cf. man unix).
Sockets.getaddrinfo — Functiongetaddrinfo(host::AbstractString, IPAddr) -> IPAddrObtiene 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"getaddrinfo(host::AbstractString) -> IPAddrObtiene 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.
Sockets.getipaddr — Functiongetipaddr() -> IPAddrObtiene 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 -> TObtiene 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.
Sockets.getipaddrs — Functiongetipaddrs(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").
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.
Sockets.islinklocaladdr — Functionislinklocaladdr(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())Sockets.getalladdrinfo — Functiongetalladdrinfo(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"Sockets.DNSError — TypeDNSErrorEl 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.
Sockets.getnameinfo — Functiongetnameinfo(host::IPAddr) -> StringRealiza 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"Sockets.getsockname — Functiongetsockname(sock::Union{TCPServer, TCPSocket}) -> (IPAddr, UInt16)Obtiene la dirección IP y el puerto al que está vinculado el socket dado.
Sockets.getpeername — Functiongetpeername(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.
Sockets.IPAddr — TypeSockets.IPv4 — TypeIPv4(host::Integer) -> IPv4Devuelve un objeto IPv4 a partir de la dirección IP host formateada como un Integer.
Ejemplos
julia> IPv4(3223256218)
ip"192.30.252.154"IPv4(str::AbstractString) -> IPv4Analiza una cadena de dirección IPv4 en un objeto IPv4.
Ejemplos
julia> IPv4("127.0.0.1")
ip"127.0.0.1"Sockets.IPv6 — TypeIPv6(host::Integer) -> IPv6Devuelve un objeto IPv6 a partir de la dirección IP host formateada como un Integer.
Ejemplos
julia> IPv6(3223256218)
ip"::c01e:fc9a"IPv6(str::AbstractString) -> IPv6Analiza una cadena de dirección IPv6 en un objeto IPv6.
Ejemplos
julia> IPv6("::1")
ip"::1"Sockets.@ip_str — Macro@ip_str str -> IPAddrAnaliza 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"Sockets.TCPSocket — TypeTCPSocket(; 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.
Sockets.UDPSocket — TypeUDPSocket()Abre un socket UDP utilizando libuv. UDPSocket tiene varios campos para denotar el estado del socket.
Sockets.accept — Functionaccept(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.
Sockets.listenany — Functionlistenany([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.
Base.bind — Functionbind(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
ipv6onlydesactiva el modo de pila dual. Siipv6only=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 establecenreuseaddr=true, pero solo el último en vincularse recibirá tráfico.
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)
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)Envía msg a través de socket a host:port.
Sockets.recv — Functionrecv(socket::UDPSocket)Lee un paquete UDP del socket especificado y devuelve los bytes recibidos. Esta llamada bloquea.
Sockets.recvfrom — Functionrecvfrom(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.
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.
Sockets.setopt — Functionsetopt(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 entruesi 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).
Sockets.nagle — Functionnagle(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.
Esta función requiere Julia 1.3 o posterior.
Sockets.quickack — Functionquickack(socket::Union{TCPServer, TCPSocket}, enable::Bool)En sistemas Linux, el TCP_QUICKACK está deshabilitado o habilitado en socket.