Spec-Zone.ru › Julia 1.4

Сокеты

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-адреса локальной машины указанного типа. Выбрасывает исключение, если адреса указанного типа недоступны.

Примеры

julia> getipaddr()
ip"192.168.1.28"

julia> getipaddr(IPv6)
ip"fe80::9731:35af:e1c5:6e49"
исходный код

Sockets.getipaddrsФункция

getipaddrs(; loopback::Bool=false) -> Vector{IPAddr}

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

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

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

Параметр loopback определяет, включать ли адреса обратной связи.

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

Примеры

julia> getipaddrs()
2-element Array{IPv4,1}:
 ip"10.255.0.183"
 ip"172.17.0.1"

julia> getipaddrs(IPv6)
2-element Array{IPv6,1}:
 ip"fe80::9731:35af:e1c5:6e49"
 ip"fe80::445e:5fff:fe5d:5500"
исходный код

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.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: foo
Stacktrace:
[...]
исходный код
END_OF_DOCUMENT_MARKER
bind(socket::Union{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-сервера или сокета.

исходный код

Sockets.quickackФункция

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

В Linux-системах TCP_QUICKACK отключается или включается для socket.

исходный код

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

Spec-Zone.ru

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