AnyMath 文档

插座

支持套接字。 提供 IPAddr和亚型, TCPSocket的,和 UDPSocket的.

connect([host], port::Integer) -> TCPSocket

连接到主机 主机 在港口 港口.

connect(path::AbstractString) -> PipeEndpoint

连接到命名的管道/UNIX域套接字 路径.

注意Unix上的路径长度限制在92到108字节之间. 人类unix).

listen([addr, ]port::Integer; backlog::Integer=BACKLOG_DEFAULT) -> TCPServer

侦听端口上指定的地址 地址. 默认情况下,它会侦听 本地主机 只有。 侦听所有接口传递 IPv4(0)IPv6(0) 视情况而定。 积压工作 确定可挂起的连接数(未调用 接受)之前,服务器将开始拒绝他们。 的默认值 积压工作 是511.

listen(path::AbstractString) -> PipeServer

在命名的管道/UNIX域套接字上创建和侦听。

注意Unix上的路径长度限制在92到108字节之间. 人类unix).

getaddrinfo(host::AbstractString, IPAddr) -> IPAddr

获取 主机 指定的 IPAddr 类型。 使用操作系统的底层getaddrinfo实现,它可以执行DNS查找。

*例子*

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

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

获取第一个可用的IP地址 主机,这可能是一个 IPv4IPv6 地址。 使用操作系统的底层getaddrinfo实现,它可以执行DNS查找。

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"

请参阅 [医盖替帕德].

getipaddrs(addr_type::Type{T}=IPAddr; loopback::Bool=false) where T<:IPAddr -> Vector{T}

获取本地机器的IP地址。

设置可选项 addr_type 参数至 IPv4IPv6 只导致返回该类型的地址。

环回 关键字参数指示环回地址(例如 ip"127.0.0.1", ip"::1")都包括在内。

兼容性

Julia1.2此功能自Julia1.2起可用。

*例子*

julia> getipaddrs()
5-element Vector{IPAddr}:
 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 Vector{IPv6}:
 ip"2001:db8:8:4:445e:5fff:fe5d:5500"
 ip"2001:db8:8:4:c164:402e:7e3c:3668"
 ip"fe80::445e:5fff:fe5d:5500"

请参阅 n.岛,岛.

islinklocaladdr(addr::IPAddr)

测试IP地址是否为链接本地地址。 链路本地地址不能保证在其网段之外是唯一的,因此路由器不会转发它们。 链接本地地址来自地址块 169.254.0.0/16fe80::/10.

*例子*

filter(!islinklocaladdr, getipaddrs())
getalladdrinfo(host::AbstractString) -> Vector{IPAddr}

获取 主机. 使用操作系统的底层 获取资讯 实现,这可能会做一个DNS查找。

*例子*

julia> getalladdrinfo("google.com")
2-element Vector{IPAddr}:
 ip"172.217.6.174"
 ip"2607:f8b0:4000:804::200e"
DNSError

DNS查找中发生错误时引发的异常类型。 该 主机 字段指示主机URL字符串。 该 密码 字段指示基于libuv的错误代码。

getnameinfo(host::IPAddr) -> String

对IP地址执行反向查找,以使用操作系统的基础返回主机名和服务 泛南资讯 执行。

*例子*

julia> getnameinfo(IPv4("8.8.8.8"))
"google-public-dns-a.google.com"
getsockname(sock::Union{TCPServer, TCPSocket}) -> (IPAddr, UInt16)

获取给定套接字绑定的IP地址和端口。

getpeername(sock::TCPSocket) -> (IPAddr, UInt16)

获取给定套接字连接到的远程端点的IP地址和端口。 仅对连接的TCP套接字有效。

IPAddr

IP地址的抽象超类型。 IPv4IPv6是这个的亚型。

IPv4(host::Integer) -> IPv4

从IP地址返回IPv4对象 主机 格式化为 整数.

*例子*

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"
IPv6(host::Integer) -> IPv6

从IP地址返回IPv6对象 主机 格式化为 整数.

*例子*

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

将IPv6地址字符串解析为 IPv6 对象。

*例子*

julia> IPv6("::1")
ip"::1"
@ip_str str -> IPAddr

解析,解析 斯特拉 作为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"
TCPSocket(; delay=true)

使用libuv打开TCP套接字。 如果 延迟 是真的,libuv延迟创建套接字的文件描述符,直到第一个 绑定呼叫。 TCPSocket的 有各种字段来表示套接字的状态以及它的发送/接收缓冲区。

UDPSocket()

使用libuv打开UDP套接字。 UDPSocket的 有各种字段来表示套接字的状态。

accept(server[, client])

接受给定服务器上的连接并返回到客户端的连接。 可以提供未初始化的客户端流,在这种情况下,将使用它而不是创建新流。

listenany([host::IPAddr,] port_hint; backlog::Integer=BACKLOG_DEFAULT) -> (UInt16, TCPServer)

创建一个 服务器/服务器 在任何端口上,使用提示作为起点。 返回创建服务器的实际端口和服务器本身的元组。 Backlog参数定义了sockfd挂起连接队列可能增长的最大长度。

bind(socket::Union{TCPServer, UDPSocket, TCPSocket}, host::IPAddr, port::Integer; ipv6only=false, reuseaddr=false, kws...)

绑定 插座 给给定的 主机:端口. 请注意 0.0.0.0 将在所有设备上收听。

* 只有ipv6 参数禁用双堆栈模式。 如果 ipv6only=true,只创建IPv6堆栈。 *如果 reuseaddr=真,多个线程或进程可以绑定到相同的地址没有错误,如果他们都设置 reuseaddr=真,但只有最后绑定的才会收到任何流量。

bind(chnl::Channel, task::Task)

关联的生命周期 chnl 有任务。 频道 chnl 任务终止时自动关闭。 任务中任何未捕获的异常都会传播到 chnl.

chnl 可以独立于任务终止显式关闭对象。 终止任务对已关闭没有影响 频道 物体。

当一个通道绑定到多个任务时,第一个终止的任务将关闭该通道。 当多个通道绑定到同一个任务时,任务的终止将关闭所有绑定的通道。

*例子*

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
[...]
send(socket::UDPSocket, host::IPAddr, port::Integer, msg)

发送 味精 结束 插座主机:端口.

recv(socket::UDPSocket)

从指定的套接字中读取UDP数据包,并返回收到的字节。 此调用阻止。

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

从指定的套接字读取UDP数据包,返回 (host_port,数据),在哪里 host_port 将是一个InetAddr{IPv4} 或InetAddr{IPv6},视情况而定。

兼容性

Julia1.3在Julia1.3版本之前,第一个返回的值是一个地址(IPAddr). 在版本1.3中,它被更改为 InetAddr.

setopt(sock::UDPSocket; multicast_loop=nothing, multicast_ttl=nothing, enable_broadcast=nothing, ttl=nothing)

设置UDP套接字选项。

* 多播/多播:多播数据包的环回(默认: 真的). * 多播_ttl:多播数据包的TTL(默认: 什么都没有). * [医]播音:标志必须设置为 真的 如果套接字将用于广播消息,否则UDP系统将返回访问错误(默认): 错误). * ttl电平:套接字上发送的数据包的生存时间(默认): 什么都没有).

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

Nagle的算法将多个小的TCP数据包批量化为较大的数据包。 这可以提高吞吐量,但会恶化延迟。 Nagle的算法默认启用。 此函数设置Nagle的算法是否在给定的TCP服务器或套接字上处于活动状态。 相反的选项被调用 [医]中医药 用其他语言。

兼容性

Julia1.3此功能需要Julia1.3或更高版本。

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

在Linux系统上,TCP_QUICKACK在 插座.