Spec-Zone.ru › Julia 1.7

Сокеты

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.

исходный код

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)

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

исходный код

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: обратная связь для пакетов multicast (по умолчанию: true).
  • multicast_ttl: TTL для пакетов multicast (по умолчанию: nothing).
  • enable_broadcast: флаг должен быть установлен на true если сокет будет использоваться для broadcast сообщений, иначе 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.7.0/stdlib/Sockets/

Spec-Zone.ru

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