Spec-Zone.ru › Julia 1.6

Сокеты

Sockets.SocketsМодуль

Поддержка сокетов. Предоставляет IPAddr и подтипы, TCPSocket, и UDPSocket.

исходный код

Sockets.connectМетод

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

Подключение к хосту host на порту port.

исходный код

Sockets.connectМетод

connect(path::AbstractString) -> PipeEndpoint

Подключение к именованной трубе/сокету доменной области UNIX по адресу path.

исходный код

Sockets.listenМетод

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

Прослушивание порта по адресу, указанному в addr. По умолчанию прослушивание только на localhost. Чтобы прослушивать на всех интерфейсах, используйте IPv4(0) или IPv6(0) соответственно. backlog определяет, сколько подключений могут быть ожидающими (до вызова accept), прежде чем сервер начнёт их отклонять. Значение по умолчанию для backlog равно 511.

исходный код

Sockets.listenМетод

listen(path::AbstractString) -> PipeServer

Создание и прослушивание именованной трубы/сокета доменной области UNIX.

исходный код

Sockets.getaddrinfoФункция

getaddrinfo(host::AbstractString, IPAddr=IPv4) -> IPAddr

Получает первый IP-адрес host указанного IPAddr типа. Использует реализацию getaddrinfo операционной системы, которая может выполнять поиск DNS.

исходный код

Sockets.getipaddrФункция

getipaddr() -> IPAddr

Получение IP-адреса локальной машины, отдавая предпочтение IPv4 перед IPv6. Бросает исключение, если адреса недоступны.

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

Получение IP-адреса локальной машины указанного типа. Бросает исключение, если адреса указанного типа недоступны.

Эта функция является обёрткой обратной совместимости вокруг getipaddrs. Новые приложения должны использовать getipaddrs.

Примеры

julia> getipaddr()
ip"192.168.1.28"

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

См. также: getipaddrs

исходный код

Sockets.getipaddrsФункция

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

Получение IP-адресов локальной машины.

Установка необязательного параметра addr_type в IPv4 или IPv6 возвращает только адреса этого типа.

Ключевой аргумент loopback определяет, включать ли адреса обратной связи (например, ip"127.0.0.1", ip"::1").

Эта функция доступна начиная с Julia 1.2.

Примеры

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"

См. также: islinklocaladdr, split(ENV["SSH_CONNECTION"], ' ')[3]

исходный код

Sockets.islinklocaladdrФункция

islinklocaladdr(addr::IPAddr)

Проверяет, является ли IP-адрес адресом локальной сети. Адреса локальной сети не гарантируют уникальность за пределами сегмента сети, поэтому маршрутизаторы их не передают. Адреса локальной сети взяты из блоков адресов 169.254.0.0/16 или fe80::/10.

Пример

filter(!islinklocaladdr, getipaddrs())
исходный код

Sockets.getalladdrinfoФункция

getalladdrinfo(host::AbstractString) -> Vector{IPAddr}

Получает все IP-адреса host. Использует реализацию getaddrinfo операционной системы, которая может выполнять поиск DNS.

Пример

julia> getalladdrinfo("google.com")
2-element Array{IPAddr,1}:
 ip"172.217.6.174"
 ip"2607:f8b0:4000:804::200e"
исходный код

Sockets.DNSErrorТип

DNSError

Тип исключения, выбрасываемого при возникновении ошибки в поиске DNS. Поле host указывает строку URL хоста. Поле code указывает код ошибки, основанный на libuv.

исходный код

Sockets.getnameinfoФункция

getnameinfo(host::IPAddr) -> String

Выполняет обратный поиск IP-адреса для получения имени хоста и службы с использованием реализации getnameinfo операционной системы.

Примеры

julia> getnameinfo(Sockets.IPv4("8.8.8.8"))
"google-public-dns-a.google.com"
исходный код

Sockets.getsocknameФункция

getsockname(sock::Union{TCPServer, TCPSocket}) -> (IPAddr, UInt16)

Получение IP-адреса и порта, к которому привязан данный сокет.

исходный код

Sockets.getpeernameФункция

getpeername(sock::TCPSocket) -> (IPAddr, UInt16)

Получение IP-адреса и порта удалённого узла, к которому подключён данный сокет. Действительно только для подключённых TCP-сокетов.

исходный код

Sockets.IPAddrТип

IPAddr

Абстрактный супертип для IP-адресов. IPv4 и IPv6 являются подтипами этого.

исходный код

Sockets.IPv4Тип

IPv4(host::Integer) -> IPv4

Возвращает объект IPv4 из IP-адреса host в формате Integer.

Примеры

julia> IPv4(3223256218)
ip"192.30.252.154"
исходный код

Sockets.IPv6Тип

IPv6(host::Integer) -> IPv6

Возвращает объект IPv6 из IP-адреса host в формате Integer.

Примеры

julia> IPv6(3223256218)
ip"::c01e:fc9a"
исходный код

Sockets.@ip_strМакрос

@ip_str str -> IPAddr

Разбор str как IP-адреса.

Примеры

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Тип

TCPSocket(; delay=true)

Открытие TCP-сокета с использованием libuv. Если delay равно true, libuv откладывает создание дескриптора файла сокета до первого вызова bind. TCPSocket имеет различные поля для обозначения состояния сокета, а также буферов отправки/приёма.

исходный код

Sockets.UDPSocketТип

UDPSocket()

Открытие UDP-сокета с использованием libuv. UDPSocket имеет различные поля для обозначения состояния сокета.

исходный код

Sockets.acceptФункция

accept(server[, client])

Принимает соединение на заданном сервере и возвращает соединение с клиентом. Может быть предоставлен неинициализированный клиентский поток, в таком случае он будет использован вместо создания нового.

исходный код

Sockets.listenanyФункция

listenany([host::IPAddr,] port_hint) -> (UInt16, TCPServer)

Создает сокет на любом порту, используя указанный порт в качестве начальной точки. Возвращает кортеж из фактического порта, на котором был создан сервер, и самого сервера.

исходный код

Base.bindФункция

bind(chnl::Channel, task::Task)

Связывает жизненный цикл chnl с задачей. Channel chnl автоматически закрывается при завершении задачи. Любое необработанное исключение в задаче распространяется на всех ожидающих на chnl.

Объект chnl может быть явно закрыт независимо от завершения задачи. Завершение задач не влияет на уже закрытые объекты Channel.

Когда канал связан с несколькими задачами, первая завершающаяся задача закроет канал. Когда несколько каналов связаны с одной задачей, завершение задачи закроет все связанные каналы.

Примеры

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
[...]
исходный код
bind(socket::Union{TCPServer, UDPSocket, TCPSocket}, host::IPAddr, port::Integer; ipv6only=false, reuseaddr=false, kws...)

Связывает socket с данным host:port. Обратите внимание, что 0.0.0.0 будет прослушивать все устройства.

  • Параметр ipv6only отключает режим двойного стека. Если ipv6only=true, будет создан только стек IPv6.
  • Если reuseaddr=true, несколько потоков или процессов могут связываться с одним и тем же адресом без ошибок, если все они установят reuseaddr=true, но только последний, кто соединился, получит любой трафик.
исходный код

Sockets.sendФункция

send(socket::UDPSocket, host::IPAddr, port::Integer, msg)

Отправляет msg по socket в host:port.

исходный код

Sockets.recvФункция

recv(socket::UDPSocket)

Считывает пакет UDP из указанного сокета и возвращает полученные байты. Этот вызов блокирует.

исходный код

Sockets.recvfromФункция

recvfrom(socket::UDPSocket) -> (host_port, data)

Считывает пакет UDP из указанного сокета, возвращая кортеж из (host_port, data), где host_port будет InetAddr{IPv4} или InetAddr{IPv6}, в зависимости от случая.

До версии Julia 1.3 первым возвращаемым значением был адрес (IPAddr). В версии 1.3 он был изменен на InetAddr.

исходный код

Sockets.setoptФункция

setopt(sock::UDPSocket; multicast_loop=nothing, multicast_ttl=nothing, enable_broadcast=nothing, ttl=nothing)

Устанавливает параметры сокета UDP.

  • multicast_loop: обратная петля для мультивещательных пакетов (по умолчанию: true).
  • multicast_ttl: TTL для мультивещательных пакетов (по умолчанию: nothing).
  • enable_broadcast: флаг должен быть установлен в true, если сокет будет использоваться для широковещательных сообщений, иначе UDP-система вернёт ошибку доступа (по умолчанию: false).
  • ttl: Время жизни пакетов, отправляемых по сокету (по умолчанию: nothing).
исходный код

Sockets.nagleФункция

nagle(socket::Union{TCPServer, TCPSocket}, enable::Bool)

Включает или отключает алгоритм Нагле на заданном TCP-сервере или сокете.

Эта функция требует Julia 1.3 или более поздней версии.

исходный код

Sockets.quickackФункция

quickack(socket::Union{TCPServer, TCPSocket}, enable::Bool)

На системах Linux функция TCP_QUICKACK отключается или включается для socket.

исходный код

© 2009–2021 Jeff Bezanson, Stefan Karpinski, Viral B. Shah, and other contributors
Licensed under the MIT License.
https://docs.julialang.org/en/v1.6.0/stdlib/Sockets/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API