Sockets
Sockets.Sockets — ModuleSockets.connect — Methodconnect([host], port::Integer) -> TCPSocketホスト host にポート port で接続します。
Sockets.connect — Methodconnect(path::AbstractString) -> PipeEndpoint指定されたパスにある名前付きパイプ / UNIX ドメインソケットに接続します。
Sockets.listen — Methodlisten([addr, ]port::Integer; backlog::Integer=BACKLOG_DEFAULT) -> TCPServer指定されたアドレス addr のポートでリッスンします。デフォルトでは、これは localhost のみでリッスンします。すべてのインターフェースでリッスンするには、適切に IPv4(0) または IPv6(0) を渡します。backlog は、サーバーが接続を拒否し始める前に、保留中の接続(accept を呼び出していない)をどれだけ受け入れられるかを決定します。backlog のデフォルト値は 511 です。
Sockets.listen — Methodlisten(path::AbstractString) -> PipeServer名前付きパイプ / UNIX ドメインソケットを作成してリッスンします。
Sockets.getaddrinfo — Functiongetaddrinfo(host::AbstractString, IPAddr) -> IPAddr指定された IPAddr タイプの host の最初の IP アドレスを取得します。オペレーティングシステムの基盤となる getaddrinfo 実装を使用し、DNS ルックアップを行う場合があります。
例
julia> getaddrinfo("localhost", IPv6)
ip"::1"
julia> getaddrinfo("localhost", IPv4)
ip"127.0.0.1"getaddrinfo(host::AbstractString) -> IPAddrhostの最初の利用可能なIPアドレスを取得します。これはIPv4またはIPv6アドレスのいずれかである可能性があります。オペレーティングシステムの基盤となるgetaddrinfo実装を使用し、DNSルックアップを行う場合があります。
Sockets.getipaddr — Functiongetipaddr() -> 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 — Functiongetipaddrs(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> 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を参照してください。
Sockets.islinklocaladdr — Functionislinklocaladdr(addr::IPAddr)IPアドレスがリンクローカルアドレスであるかどうかをテストします。リンクローカルアドレスは、そのネットワークセグメントを超えて一意であることが保証されていないため、ルーターはそれらを転送しません。リンクローカルアドレスは、アドレスブロック 169.254.0.0/16 または fe80::/10 からのものです。
例
filter(!islinklocaladdr, getipaddrs())Sockets.getalladdrinfo — Functiongetalladdrinfo(host::AbstractString) -> Vector{IPAddr}hostのすべてのIPアドレスを取得します。オペレーティングシステムの基盤となるgetaddrinfo実装を使用し、DNSルックアップを行う場合があります。
例
julia> getalladdrinfo("google.com")
2-element Array{IPAddr,1}:
ip"172.217.6.174"
ip"2607:f8b0:4000:804::200e"Sockets.DNSError — TypeDNSErrorDNS ルックアップ中にエラーが発生したときにスローされる例外のタイプです。host フィールドはホスト URL 文字列を示します。code フィールドは libuv に基づくエラーコードを示します。
Sockets.getnameinfo — Functiongetnameinfo(host::IPAddr) -> StringIPアドレスの逆引きを行い、オペレーティングシステムの基盤となる getnameinfo 実装を使用してホスト名とサービスを返します。
例
julia> getnameinfo(IPv4("8.8.8.8"))
"google-public-dns-a.google.com"Sockets.getsockname — Functiongetsockname(sock::Union{TCPServer, TCPSocket}) -> (IPAddr, UInt16)指定されたソケットがバインドされているIPアドレスとポートを取得します。
Sockets.getpeername — Functiongetpeername(sock::TCPSocket) -> (IPAddr, UInt16)指定されたソケットが接続されているリモートエンドポイントのIPアドレスとポートを取得します。接続されたTCPソケットに対してのみ有効です。
Sockets.IPAddr — TypeSockets.IPv4 — TypeIPv4(host::Integer) -> IPv4IPアドレス host を Integer 形式で指定して、IPv4オブジェクトを返します。
例
julia> IPv4(3223256218)
ip"192.30.252.154"IPv4(str::AbstractString) -> IPv4IPv4アドレス文字列をIPv4オブジェクトに解析します。
例
julia> IPv4("127.0.0.1")
ip"127.0.0.1"Sockets.IPv6 — TypeIPv6(host::Integer) -> IPv6IPアドレス host を Integer 形式でフォーマットされたIPv6オブジェクトを返します。
例
julia> IPv6(3223256218)
ip"::c01e:fc9a"IPv6(str::AbstractString) -> IPv6IPv6アドレス文字列をIPv6オブジェクトに解析します。
例
julia> IPv6("::1")
ip"::1"Sockets.@ip_str — Macro@ip_str str -> IPAddrstrを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 — TypeTCPSocket(; delay=true)libuvを使用してTCPソケットを開きます。delayがtrueの場合、libuvは最初のbind呼び出しまでソケットのファイルディスクリプタの作成を遅延させます。TCPSocketには、ソケットの状態や送受信バッファを示すさまざまなフィールドがあります。
Sockets.UDPSocket — TypeUDPSocket()libuvを使用してUDPソケットを開きます。UDPSocketにはソケットの状態を示すさまざまなフィールドがあります。
Sockets.accept — Functionaccept(server[, client])指定されたサーバーで接続を受け入れ、クライアントへの接続を返します。初期化されていないクライアントストリームが提供される場合、それが新しいストリームを作成する代わりに使用されます。
Sockets.listenany — Functionlistenany([host::IPAddr,] port_hint; backlog::Integer=BACKLOG_DEFAULT) -> (UInt16, TCPServer)任意のポートで TCPServer を作成し、ヒントを出発点として使用します。サーバーが作成された実際のポートとサーバー自体のタプルを返します。backlog 引数は、sockfd の保留中の接続のキューが成長できる最大長を定義します。
Base.bind — Functionbind(socket::Union{TCPServer, 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)
falsejulia> 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
[...]Sockets.send — Functionsend(socket::UDPSocket, host::IPAddr, port::Integer, msg)sockを介してhost:portにmsgを送信します。
Sockets.recv — Functionrecv(socket::UDPSocket)指定されたソケットからUDPパケットを読み取り、受信したバイトを返します。この呼び出しはブロックします。
Sockets.recvfrom — Functionrecvfrom(socket::UDPSocket) -> (host_port, data)指定されたソケットからUDPパケットを読み取り、(host_port, data)のタプルを返します。ここで、host_portは適切にInetAddr{IPv4}またはInetAddr{IPv6}になります。
Sockets.setopt — Functionsetopt(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 — Functionnagle(socket::Union{TCPServer, TCPSocket}, enable::Bool)ナグルのアルゴリズムは、複数の小さなTCPパケットを大きなパケットにバッチ処理します。これによりスループットが向上する可能性がありますが、レイテンシが悪化することがあります。ナグルのアルゴリズムはデフォルトで有効になっています。この関数は、特定のTCPサーバーまたはソケットでナグルのアルゴリズムがアクティブかどうかを設定します。反対のオプションは、他の言語ではTCP_NODELAYと呼ばれます。
Sockets.quickack — Functionquickack(socket::Union{TCPServer, TCPSocket}, enable::Bool)Linuxシステムでは、TCP_QUICKACKはsocketで無効または有効になります。