Сокеты
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-адрес локальной машины указанного типа. Выбрасывает исключение, если адреса указанного типа недоступны.
Примеры
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> 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 равно 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(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: foo
Stacktrace:
[...]
source
Sockets.sendФункция
send(socket::UDPSocket, host::IPAddr, port::Integer, msg)
Отправка msg по socket в host:port.
Sockets.recvФункция
recv(socket::UDPSocket)
Чтение UDP-пакета из указанного сокета и возврат полученных байтов. Этот вызов блокирующий.
source
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)
Включение или выключение алгоритма Nagle для данного TCP-сервера или сокета.
source
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.3.1/stdlib/Sockets/