Сокеты
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/