Spec-Zone.ru › Julia 1.8

Сокеты

Sockets.SocketsМодуль

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

Sockets.connectМетод

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

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

Sockets.connectМетод

connect(path::AbstractString) -> PipeEndpoint

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

Длина пути в Unix ограничена примерно 92-108 байтами (см. man unix).

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-доменного сокета.

Длина пути в Unix ограничена примерно 92-108 байтами (см. man 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 на любом порту, используя подсказку в качестве отправной точки. Возвращает кортеж из фактического порта, на котором был создан сервер, и самого сервера.

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–2022 Jeff Bezanson, Stefan Karpinski, Viral B. Shah, and other contributors
Licensed under the MIT License.
https://docs.julialang.org/en/v1.8/stdlib/Sockets/

Spec-Zone.ru

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