Spec-Zone.ru › Julia 0.7

Сокеты

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-адрес локальной машины.

Примеры

julia> getipaddr()
ip"192.168.1.28"
исходный код

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.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.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:
[...]
исходный код
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, port::Integer, msg)

Отправить msg по socket адресату host:port.

исходный код

Sockets.recvФункция

recv(socket::UDPSocket)

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

исходный код

Sockets.recvfromФункция

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

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

исходный код

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).
исходный код

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

Spec-Zone.ru

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