Sockets
Sockets.Sockets ── モジュール
Sockets.connect ── メソッド
Sockets.connect ── メソッド
Sockets.listen ── メソッド
Sockets.listen ── メソッド
Sockets.getaddrinfo ── 関数
getaddrinfo(host::AbstractString, IPAddr=IPv4) -> IPAddr
host の一つ目の IP アドレスを指定した IPAddr 型で取得します。オペレーティングシステムが提供する getaddrinfo 実装を使うので、DNS ルックアップが起こる可能性があります。
Sockets.getipaddr ── 関数
getipaddr() -> IPAddr
ローカルマシンの IP アドレスを一つ取得します。IPv6 より IPv4 を優先します。アドレスが一つも利用可能でなければ例外が送出されます。
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 ── 関数
getipaddrs(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 1.2 以降でサポートされます。
例
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, split(ENV["SSH_CONNECTION"], ' ')[3] も参照してください。
Sockets.islinklocaladdr ── 関数
islinklocaladdr(addr::IPAddr)
IP アドレス addr がリンクローカルアドレスかどうかを判定します。リンクローカルアドレスはネットワークセグメントをまたいで一意であることが保証されておらず、そのためルーターはフォワードを行いません。リンクローカルアドレスはアドレスブロック 169.254.0.0/16 または fe80::/10 に含まれます。
例
filter(!islinklocaladdr, getipaddrs())
Sockets.getalladdrinfo ── 関数
getalladdrinfo(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 ── 型
DNSError
DNS ルックアップでエラーが発生したときに送出される例外の型です。host フィールドがホスト URL を表す文字列であり、code フィールドが libuv におけるエラーコードです。
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 ── 型
Sockets.IPv4 ── 型
Sockets.IPv6 ── 型
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 ── 型
Sockets.UDPSocket ── 型
Sockets.accept ── 関数
accept(server[, client])
与えられたサーバーで接続を受け付け、クライアントへの接続を返します。未初期化のクライアントストリームを与えることもでき、その場合は新しいストリームを作成せずに与えたストリームを更新して返します。
Sockets.listenany ── 関数
listenany([host::IPAddr,] port_hint) -> (UInt16, TCPServer)
TCPServer を任意のポートで作成します。port_hint は最初に試すポートを表すヒントです。サーバーが実際に作成されたポートとサーバー自身からなるタプルを返します。
Base.bind ── 関数
bind(chnl::Channel, task::Task)
chnl の寿命を task に関連付けます。Channel 型の値 chnl は task が終了すると自動的に閉じられるようになります。task 内の未捕捉の例外は chnl を wait する全てのタスクに伝播します。
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: TaskFailedException:
foo
Stacktrace:
[...]
bind(socket::Union{UDPSocket, TCPSocket},
host::IPAddr,
port::Integer; ipv6only=false,
reuseaddr=false,
kws...)
socket を与えられた host:port にバインドします。0.0.0.0 とすると全てのデバイスにリッスンします。
ipv6only = trueだとデュアルスタックモードが無効になり、IPv6 スタックだけが作成されます。reuseaddr=trueだと、複数のスレッドまたはプロセスがreuseaddr=trueとして同じアドレスをバインドしたときにエラーが起こらなくなります。ただしトラフィックを受け取るのは最後にバインドしたスレッド/プロセスだけです。
Sockets.send ── 関数
send(socket::UDPSocket, host::IPAddr, port::Integer, msg)
socket を通じて msg を host:port に送信します。
Sockets.recv ── 関数
Sockets.recvfrom ── 関数
recvfrom(socket::UDPSocket) -> (host_port, data)
指定されたソケットから UDP パケットを読み、タプル (host_port, data) を返します。ここで host_port は InetAddr{IPv4} または InetAddr{IPv6} から適切な方が選ばれます。
Julia 1.3 より前のバージョンでは一つ目の返り値がアドレス (IPAddr) でしたが、Julia 1.3 で InetAddr に変更されました。
Sockets.setopt ── 関数
setopt(sock::UDPSocket;
multicast_loop=nothing,
multicast_ttl=nothing,
enable_broadcast=nothing,
ttl=nothing)
UDP ソケットのオプションを設定します。
multicast_loop: マルチキャストパケットのループバック。multicast_ttl: マルチキャストパケットの TTL。enable_broadcast: ブロードキャストメッセージに使われるソケットでtrueに設定する必要があるフラグ。設定しないと UDP システムでアクセスエラーが発生する。ttl: ソケットに送られるパケットの TTL。
Sockets.nagle ── 関数
nagle(socket::Union{TCPServer, TCPSocket}, enable::Bool)
与えられた TCP サーバーもしくはソケットで Nagle アルゴリズムを有効化または無効化します。
Sockets.quickack ── 関数
quickack(socket::Union{TCPServer, TCPSocket}, enable::Bool)
socket に対する TCP_QUICKACK を有効化または無効化します。このオプションは Linux システムにのみ存在します。