Spec-Zone.ru › Julia 1.11

Сокеты

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) -> IPAddr

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

Примеры

julia> getaddrinfo("localhost", IPv6)
ip"::1"

julia> getaddrinfo("localhost", IPv4)
ip"127.0.0.1"
getaddrinfo(host::AbstractString) -> IPAddr

Получает первый доступный IP-адрес host, который может быть либо IPv4, либо IPv6 адресом. Использует реализацию 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(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"
IPv4(str::AbstractString) -> IPv4

Разбирает строку IPv4 адреса в объект IPv4.

Примеры

julia> IPv4("127.0.0.1")
ip"127.0.0.1"

Sockets.IPv6Тип

IPv6(host::Integer) -> IPv6

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

Примеры

julia> IPv6(3223256218)
ip"::c01e:fc9a"
IPv6(str::AbstractString) -> IPv6

Разбирает строку IPv6 адреса в объект IPv6.

Примеры

julia> IPv6("::1")
ip"::1"

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; backlog::Integer=BACKLOG_DEFAULT) -> (UInt16, TCPServer)

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

Base.bindФункция

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

Sockets.sendФункция

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

Отправить msg через socket в host:port.

Sockets.recvФункция

recv(socket::UDPSocket)

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

END_OF_DOCUMENT_MARKER

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-пакетов в более крупные. Это может улучшить пропускную способность, но ухудшить задержку. Алгоритм Нагеля включён по умолчанию. Эта функция устанавливает, активен ли алгоритм Нагеля на данном TCP-сервере или сокете. Противоположная опция называется TCP_NODELAY на других языках.

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

Sockets.quickackФункция

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

В системах Linux TCP_QUICKACK отключён или включён на socket.

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

Spec-Zone.ru

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