Spec-Zone.ru › Julia 1.5

Сокеты

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, split(ENV["SSH_CONNECTION"], ' ')[3]

исходный код

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

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.5.3/stdlib/Sockets/

Spec-Zone.ru

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