Spec-Zone.ru › Julia 1.2

Сокеты

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Функция

getalladdrinfo(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 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 истинно, libuv откладывает создание дескриптора файла сокета до первого вызова bind. TCPSocket имеет различные поля для обозначения состояния сокета, а также его буферов отправки/приёма.

исходный код

Sockets.UDPSocketТип

UDPSocket()

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

исходный код

Sockets.acceptФункция

accept(server[,client])

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

исходный код

Sockets.listenanyФункция

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

Создать 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: foo
Stacktrace:
[...]
исходный код
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, но только последний, который привяжется, получит любой трафик.
source

Sockets.sendФункция

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

Отправить msg по socket на host:port.

source

Sockets.recvФункция

recv(socket::UDPSocket)

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

source

Sockets.recvfromФункция

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

Прочитать пакет UDP из указанного сокета, возвращая кортеж (address, data), где address будет либо IPv4, либо IPv6, соответственно.

source

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).
source

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

Spec-Zone.ru

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