種類
- インスタンスメソッド (52)
- 特異メソッド (16)
- 定数 (14)
クラス
- Addrinfo (34)
- BasicSocket (7)
- IPSocket (1)
- Socket (16)
-
Socket
:: AncillaryData (6) -
Socket
:: Ifaddr (5) -
Socket
:: UDPSource (2) - UDPSocket (4)
モジュール
キーワード
-
EAI
_ ADDRFAMILY (2) -
IFF
_ LIVE _ ADDR _ CHANGE (2) -
INADDR
_ ALLHOSTS _ GROUP (2) -
INADDR
_ LOOPBACK (2) -
INADDR
_ MAX _ LOCAL _ GROUP (2) -
INET6
_ ADDRSTRLEN (2) -
INET
_ ADDRSTRLEN (2) -
accept
_ loop (1) - afamily (1)
- broadaddr (1)
- canonname (1)
-
connect
_ nonblock (1) -
do
_ not _ reverse _ lookup= (1) - dstaddr (1)
-
family
_ addrinfo (2) - flags (1)
- foreach (2)
- getaddrinfo (2)
- getnameinfo (1)
- ip? (1)
-
ip
_ address _ list (1) -
ip
_ pktinfo (2) - ipv4? (1)
-
ipv4
_ loopback? (1) -
ipv4
_ multicast? (1) -
ipv4
_ private? (1) - ipv6? (1)
-
ipv6
_ linklocal? (1) -
ipv6
_ loopback? (1) -
ipv6
_ mc _ global? (1) -
ipv6
_ mc _ linklocal? (1) -
ipv6
_ mc _ nodelocal? (1) -
ipv6
_ mc _ orglocal? (1) -
ipv6
_ mc _ sitelocal? (1) -
ipv6
_ multicast? (1) -
ipv6
_ pktinfo (2) -
ipv6
_ pktinfo _ addr (1) -
ipv6
_ pktinfo _ ifindex (1) -
ipv6
_ sitelocal? (1) -
ipv6
_ to _ ipv4 (1) -
ipv6
_ unique _ local? (1) -
ipv6
_ unspecified? (1) -
ipv6
_ v4compat? (1) -
ipv6
_ v4mapped? (1) - listen (2)
-
local
_ address (2) - netmask (1)
- new (3)
- open (1)
- pfamily (1)
- protocol (1)
- recvfrom (2)
-
recvfrom
_ nonblock (2) - recvmsg (1)
-
recvmsg
_ nonblock (1) - send (2)
- sendmsg (1)
-
sendmsg
_ nonblock (1) -
tcp
_ server _ loop (2) - unix? (1)
-
unix
_ server _ loop (1)
検索結果
先頭5件
-
Socket
:: Ifaddr # addr -> Addrinfo | nil (63910.0) -
self のアドレスを Addrinfo オブジェクトで返します。 self が利用できない場合は nil を返します。
self のアドレスを Addrinfo オブジェクトで返します。
self が利用できない場合は nil を返します。 -
Addrinfo
# family _ addrinfo(host , port) -> Addrinfo (45907.0) -
引数から自身に「似た」Addrinfo オブジェクトを生成します。
...「似た」の意味はプロトコルファミリ、ソケットタイプ、プロトコルが
同じことを意味します。
require 'socket'
Addrinfo.tcp("0.0.0.0", 4649).family_addrinfo("www.ruby-lang.org", 80)
#=> #<Addrinfo: 221.186.184.68:80 TCP (www.ruby-lang.org:80)>
Addr......info.unix("/tmp/sock").family_addrinfo("/tmp/sock2")
#=> #<Addrinfo: /tmp/sock2 SOCK_STREAM>
@param host ホスト(IP アドレスもしくはホスト名)
@param port ポート番号(整数)もしくはサービス名(文字列)
@param path Unix domain socket のパス... -
Addrinfo
# family _ addrinfo(path) -> Addrinfo (45907.0) -
引数から自身に「似た」Addrinfo オブジェクトを生成します。
...「似た」の意味はプロトコルファミリ、ソケットタイプ、プロトコルが
同じことを意味します。
require 'socket'
Addrinfo.tcp("0.0.0.0", 4649).family_addrinfo("www.ruby-lang.org", 80)
#=> #<Addrinfo: 221.186.184.68:80 TCP (www.ruby-lang.org:80)>
Addr......info.unix("/tmp/sock").family_addrinfo("/tmp/sock2")
#=> #<Addrinfo: /tmp/sock2 SOCK_STREAM>
@param host ホスト(IP アドレスもしくはホスト名)
@param port ポート番号(整数)もしくはサービス名(文字列)
@param path Unix domain socket のパス... -
BasicSocket
# local _ address -> Addrinfo (36907.0) -
getsockname(2) で得られたローカルアドレス情報を Addrinfo オブジェクトとして返します。
...してください。
require 'socket'
TCPSocket.open("www.ruby-lang.org", 80) {|s|
p s.local_address #=> #<Addrinfo: 192.168.0.129:36873 TCP>
}
TCPServer.open("127.0.0.1", 1512) {|serv|
p serv.local_address #=> #<Addrinfo: 127.0.0.1:1512 TCP>
}
@see BasicSocket#getsockname... -
Socket
. ip _ address _ list -> [Addrinfo] (36907.0) -
ローカルの IP アドレスを配列で返します。
ローカルの IP アドレスを配列で返します。 -
Socket
:: UDPSource # local _ address -> Addrinfo (36907.0) -
ローカル側のアドレス情報を Addrinfo オブジェクトで返します。
ローカル側のアドレス情報を Addrinfo オブジェクトで返します。 -
Socket
:: Constants :: IFF _ LIVE _ ADDR _ CHANGE (36610.0) -
hardware address change when it's running
hardware address change when it's running -
Socket
:: IFF _ LIVE _ ADDR _ CHANGE (36610.0) -
hardware address change when it's running
hardware address change when it's running -
Socket
:: Constants :: EAI _ ADDRFAMILY -> Integer (36607.0) -
Address family for hostname not supported
...amily for hostname not supported
getaddrinfo(3), getnameinfo(3) などの
エラーコードです。
対応する Socket.getaddrinfo, Addrinfo.getaddrinfo などは
エラーを SocketError に変換するため、この定数は直接は利用しません。
@see getaddrinfo(3linux), gai_strerro... -
Socket
:: Constants :: INADDR _ ALLHOSTS _ GROUP -> Integer (36607.0) -
Multicast group for all systems on this subset。 IPv4の 244.0.0.1 に対応する整数です。
Multicast group for all systems on this subset。
IPv4の 244.0.0.1 に対応する整数です。
@see http://www.iana.org/assignments/multicast-addresses/multicast-addresses.xml, 5771 -
Socket
:: Constants :: INADDR _ LOOPBACK -> Integer (36607.0) -
The loopback address。 IPv4のループバックアドレス 127.0.0.1 に対応する整数です。
The loopback address。
IPv4のループバックアドレス 127.0.0.1 に対応する整数です。
@see ip(7linux), ip(4freebsd) -
Socket
:: Constants :: INADDR _ MAX _ LOCAL _ GROUP -> Integer (36607.0) -
The last local network multicast group。 IPv4の 244.0.0.255 に対応する整数です。
The last local network multicast group。
IPv4の 244.0.0.255 に対応する整数です。
@see http://www.iana.org/assignments/multicast-addresses/multicast-addresses.xml, 5771 -
Socket
:: Constants :: INET6 _ ADDRSTRLEN -> Integer (36607.0) -
IPv6アドレス文字列の最大長。
IPv6アドレス文字列の最大長。
@see netinet/in.h(header) -
Socket
:: Constants :: INET _ ADDRSTRLEN -> Integer (36607.0) -
IPv4アドレス文字列の最大長。
IPv4アドレス文字列の最大長。
@see netinet/in.h(header) -
Socket
:: EAI _ ADDRFAMILY -> Integer (36607.0) -
Address family for hostname not supported
...amily for hostname not supported
getaddrinfo(3), getnameinfo(3) などの
エラーコードです。
対応する Socket.getaddrinfo, Addrinfo.getaddrinfo などは
エラーを SocketError に変換するため、この定数は直接は利用しません。
@see getaddrinfo(3linux), gai_strerro... -
Socket
:: INADDR _ ALLHOSTS _ GROUP -> Integer (36607.0) -
Multicast group for all systems on this subset。 IPv4の 244.0.0.1 に対応する整数です。
Multicast group for all systems on this subset。
IPv4の 244.0.0.1 に対応する整数です。
@see http://www.iana.org/assignments/multicast-addresses/multicast-addresses.xml, 5771 -
Socket
:: INADDR _ LOOPBACK -> Integer (36607.0) -
The loopback address。 IPv4のループバックアドレス 127.0.0.1 に対応する整数です。
The loopback address。
IPv4のループバックアドレス 127.0.0.1 に対応する整数です。
@see ip(7linux), ip(4freebsd) -
Socket
:: INADDR _ MAX _ LOCAL _ GROUP -> Integer (36607.0) -
The last local network multicast group。 IPv4の 244.0.0.255 に対応する整数です。
The last local network multicast group。
IPv4の 244.0.0.255 に対応する整数です。
@see http://www.iana.org/assignments/multicast-addresses/multicast-addresses.xml, 5771 -
Socket
:: INET6 _ ADDRSTRLEN -> Integer (36607.0) -
IPv6アドレス文字列の最大長。
IPv6アドレス文字列の最大長。
@see netinet/in.h(header) -
Socket
:: INET _ ADDRSTRLEN -> Integer (36607.0) -
IPv4アドレス文字列の最大長。
IPv4アドレス文字列の最大長。
@see netinet/in.h(header) -
Addrinfo
. getaddrinfo(nodename , service , family=nil , socktype=nil , protocol=nil , flags=0) -> [Addrinfo] (27907.0) -
パラメータから複数の Addrinfo オブジェクトを生成し、その配列を返します。
...場合には制限しないことを意味します。
IPv6 に制限したい場合には family に PF_INET6 を指定します。
flags には Socket::AI_??? という定数のビット OR を取ります。
アドレスの使い方がわかっている場合には socktype を明示すべき......フォームが存在します。512 のようなポート番号は
socktype なしでは曖昧な指定となるためです。
例:
require 'socket'
Addrinfo.getaddrinfo("www.kame.net", 80, nil, :STREAM)
#=> [#<Addrinfo: 203.178.141.194:80 TCP (www.kame.net:80)>,
# #<Addrinfo: [2001:......ケットタイプ(整数、文字列、シンボル、もしくは nil)
@param protocol プロトコル(整数、もしくは nil)
@param flags フラグ(整数)
@raise SocketError getaddrinfo(3)がエラーを返したときに発生する例外です
@see Addrinfo.foreach, Socket.getaddrinfo... -
Socket
:: Ifaddr # broadaddr -> Addrinfo | nil (27907.0) -
self のブロードキャストアドレスを Addrinfo オブジェクトで返します。 self.flags で Socket::IFF_BROADCAST が有効ではない場合は nil を返します。
...self のブロードキャストアドレスを Addrinfo オブジェクトで返します。
self.flags で Socket::IFF_BROADCAST が有効ではない場合は nil を返します。... -
Socket
:: Ifaddr # dstaddr -> Addrinfo | nil (27907.0) -
self の宛先アドレスを Addrinfo オブジェクトで返します。 self.flags で Socket::IFF_POINTOPOINT が有効ではない場合は nil を返します。
...self の宛先アドレスを Addrinfo オブジェクトで返します。
self.flags で Socket::IFF_POINTOPOINT が有効ではない場合は nil を返します。... -
Socket
:: AncillaryData # ipv6 _ pktinfo _ addr -> Addrinfo (27664.0) -
自身の type が IPV6_PKTINFO である場合、保持しているデータ (アドレス、インターフェースのインデックス) のアドレスを返します。
...す。
require 'socket'
addr = Addrinfo.ip("::1")
ifindex = 0
ancdata = Socket::AncillaryData.ipv6_pktinfo(addr, ifindex)
p ancdata.ipv6_pktinfo_addr #=> #<Addrinfo: ::1>
@see Socket::AncillaryData.ipv6_pktinfo,
Socket::AncillaryData#ipv6_pktinfo,
Socket::AncillaryData#ipv6_... -
Addrinfo
# afamily -> Integer (27307.0) -
アドレスファミリーを整数で返します。
...アドレスファミリーを整数で返します。
require 'socket'
Addrinfo.tcp("localhost", 80).afamily == Socket::AF_INET #=> true... -
Addrinfo
# ipv4 _ loopback? -> bool (27307.0) -
IPv4 のループバックアドレス(127.0.0.0/8) であれば真を返します。
IPv4 のループバックアドレス(127.0.0.0/8) であれば真を返します。
@see Addrinfo#ipv6_loopback? -
Addrinfo
# ipv4 _ multicast? -> bool (27307.0) -
IPv4 のマルチキャストアドレス(224.0.0.0/4)であれば真を返します。
IPv4 のマルチキャストアドレス(224.0.0.0/4)であれば真を返します。 -
Addrinfo
# ipv6 _ linklocal? -> bool (27307.0) -
IPv6 のリンクローカルアドレス(fe80::/10, 4291)であれば真を返します。
IPv6 のリンクローカルアドレス(fe80::/10, 4291)であれば真を返します。 -
Addrinfo
# ipv6 _ loopback? -> bool (27307.0) -
IPv6 のループバックアドレス(::1)であれば真を返します。
IPv6 のループバックアドレス(::1)であれば真を返します。
@see Addrinfo#ipv4_loopback? -
Addrinfo
# ipv6 _ mc _ global? -> bool (27307.0) -
IPv6 のマルチキャスト(グローバルスコープ) アドレスであれば真を返します。
IPv6 のマルチキャスト(グローバルスコープ)
アドレスであれば真を返します。 -
Addrinfo
# ipv6 _ mc _ linklocal? -> bool (27307.0) -
IPv6 のマルチキャスト(リンクローカルスコープ)アドレスであれば真を返します。
IPv6 のマルチキャスト(リンクローカルスコープ)アドレスであれば真を返します。 -
Addrinfo
# ipv6 _ mc _ nodelocal? -> bool (27307.0) -
IPv6 のマルチキャスト(ノードローカルスコープ)アドレスであれば真を返します。
IPv6 のマルチキャスト(ノードローカルスコープ)アドレスであれば真を返します。 -
Addrinfo
# ipv6 _ mc _ orglocal? -> bool (27307.0) -
IPv6 のマルチキャスト(組織(organization)ローカルスコープ) アドレスであれば真を返します。
IPv6 のマルチキャスト(組織(organization)ローカルスコープ)
アドレスであれば真を返します。 -
Addrinfo
# ipv6 _ mc _ sitelocal? -> bool (27307.0) -
IPv6 のマルチキャスト(サイトローカルスコープ)アドレスであれば真を返します。
IPv6 のマルチキャスト(サイトローカルスコープ)アドレスであれば真を返します。 -
Addrinfo
# ipv6 _ multicast? -> bool (27307.0) -
IPv6 のマルチキャストアドレス(ff00::/8)であれば真を返します。
IPv6 のマルチキャストアドレス(ff00::/8)であれば真を返します。 -
Addrinfo
# ipv6 _ sitelocal? -> bool (27307.0) -
IPv6 のサイトローカルアドレス(fec0::/10, 3513)であれば真を返します。
IPv6 のサイトローカルアドレス(fec0::/10, 3513)であれば真を返します。 -
Addrinfo
# ipv6 _ unique _ local? -> bool (27307.0) -
IPv6 のユニークローカルアドレス(fc00::/7, 4193)であれば真を返します。
IPv6 のユニークローカルアドレス(fc00::/7, 4193)であれば真を返します。 -
Addrinfo
# listen(backlog=5) -> Socket (27307.0) -
自身のアドレスにバインドされたソケットを作成し、 listen(2) を実行します。
...渡されたときにはそのブロックに生成された Socket
オブジェクトが渡されます。ブロックの返り値がメソッドの返り値となります。
ブロックを省略した場合は、生成された Socket
オブジェクトが返されます。
@param backlog バ... -
Addrinfo
# listen(backlog=5) {|sock| . . . } -> object (27307.0) -
自身のアドレスにバインドされたソケットを作成し、 listen(2) を実行します。
...渡されたときにはそのブロックに生成された Socket
オブジェクトが渡されます。ブロックの返り値がメソッドの返り値となります。
ブロックを省略した場合は、生成された Socket
オブジェクトが返されます。
@param backlog バ... -
Addrinfo
# pfamily -> Integer (27307.0) -
プロトコルファミリーを整数で返します。
...プロトコルファミリーを整数で返します。
require 'socket'
Addrinfo.tcp("localhost", 80).pfamily == Socket::PF_INET #=> true... -
Addrinfo
# protocol -> Integer (27307.0) -
ソケットプロトコルを整数で返します。
...ソケットプロトコルを整数で返します。
require 'socket'
Addrinfo.tcp("localhost", 80).protocol == Socket::IPPROTO_TCP #=> true... -
Socket
:: Ifaddr # flags -> Integer (27307.0) -
self に指定された flags の値を返します。
self に指定された flags の値を返します。 -
Socket
. tcp _ server _ loop(host , port) {|sock , addr| . . . } -> () (18613.0) -
TCP/IP で host:port で待ち受けるサーバ側のソケットを作成し、 新しい接続を受け入れるごとにブロックを呼び出します。
...それが用いられます。
# 逐次的な echo サーバ
# 一度に一つのクライアントした取り扱えない
require 'socket'
Socket.tcp_server_loop(16807) {|sock, client_addrinfo|
begin
IO.copy_stream(sock, sock)
ensure
sock.close
end
}
# ス......注意
require 'socket'
Socket.tcp_server_loop(16807) {|sock, client_addrinfo|
Thread.new {
begin
IO.copy_stream(sock, sock)
ensure
sock.close
end
}
}
内部的には Socket.tcp_server_sockets で
生成したソケットを Socket.accept_loop で処......理しています。
@param host 割り当てるホスト名
@param port 割り当てるポート番号
@see Socket.tcp_server_sockets, Socket.accept_loop... -
Socket
. tcp _ server _ loop(port) {|sock , addr| . . . } -> () (18613.0) -
TCP/IP で host:port で待ち受けるサーバ側のソケットを作成し、 新しい接続を受け入れるごとにブロックを呼び出します。
...それが用いられます。
# 逐次的な echo サーバ
# 一度に一つのクライアントした取り扱えない
require 'socket'
Socket.tcp_server_loop(16807) {|sock, client_addrinfo|
begin
IO.copy_stream(sock, sock)
ensure
sock.close
end
}
# ス......注意
require 'socket'
Socket.tcp_server_loop(16807) {|sock, client_addrinfo|
Thread.new {
begin
IO.copy_stream(sock, sock)
ensure
sock.close
end
}
}
内部的には Socket.tcp_server_sockets で
生成したソケットを Socket.accept_loop で処......理しています。
@param host 割り当てるホスト名
@param port 割り当てるポート番号
@see Socket.tcp_server_sockets, Socket.accept_loop... -
BasicSocket
# recvmsg _ nonblock(maxmesglen=nil , flags=0 , maxcontrollen=nil , opts={}) -> [String , Addrinfo , Integer , *Socket :: AncillaryData] (18607.0) -
recvmsg(2) を用いてノンブロッキング方式でメッセージを受け取ります。
...recvmsg(2) を用いてノンブロッキング方式でメッセージを受け取ります。
ブロッキングの有無以外は BasicSocket#recvmsg と同じです。
詳しくはそちらを参照してください。
@param maxmesglen 受け取るメッセージの最大長
@param flags... -
BasicSocket
# sendmsg _ nonblock(mesg , flags=0 , dest _ sockaddr=nil , *controls) -> Integer (18607.0) -
sendmsg(2) を用いてノンブロッキング方式でメッセージを送ります。
...cSocket#sendmsg を見てください。
@return 送ったバイト数
@param mesg メッセージ文字列
@param flags フラグ(Socket::MSG_* という定数の bitwise OR を取ったもの)
@param dest_sockaddr 通信先のアドレス
@param controls 補助データの配列
@see BasicSocket#... -
Socket
# connect _ nonblock(server _ sockaddr) -> 0 (18607.0) -
ソケットをノンブロッキングモードに設定した後、 connect(2) を呼び出します。
...ソケットをノンブロッキングモードに設定した後、
connect(2) を呼び出します。
引数、返り値は Socket#connect と同じです。
connect が EINPROGRESS エラーを報告した場合、その例外(Errno::EINPROGRESS)
には IO::WaitWritable が Object#extend さ......eb page
require 'socket'
include Socket::Constants
socket = Socket.new(AF_INET, SOCK_STREAM, 0)
sockaddr = Socket.sockaddr_in(80, 'www.google.com')
begin # emulate blocking connect
socket.connect_nonblock(sockaddr)
rescue IO::WaitWritable
IO.select(nil, [socket]) # wait 3-way han......dshake completion
begin
socket.connect_nonblock(sockaddr) # check connection failure
rescue Errno::EISCONN
end
end
socket.write("GET / HTTP/1.0\r\n\r\n")
results = socket.read
@param server_sockaddr 接続先アドレス
@raise Errno::EXXX connect(2) がエラーを報告... -
Socket
# recvfrom _ nonblock(maxlen , flags=0) -> [String , Addrinfo] (18607.0) -
ソケットをノンブロッキングモードに設定した後、 recvfrom(2) を呼び出します。
...ソケットをノンブロッキングモードに設定した後、
recvfrom(2) を呼び出します。
引数、返り値は Socket#recvfrom と同じです。
recvfrom(2) がエラーになった場合、
EAGAIN, EINTR を含め例外 Errno::EXXX が発生します。
Errno::EWOULDBLOCK、Er... -
Socket
. accept _ loop(sockets) {|sock , client _ addrinfo| . . . } -> () (18607.0) -
sockets でサーバソケットを受け取り、接続を待ち受け、 クライアントとの接続が確立するたびにブロックにその接続 ソケットを渡し呼び出します。
...sockets でサーバソケットを受け取り、接続を待ち受け、
クライアントとの接続が確立するたびにブロックにその接続
ソケットを渡し呼び出します。
ブロックの引数はクライアントと接続したソケットオブジェクトと
Addrinfo......
Socket.tcp_server_loop と同様、ブロックは
逐次的に呼び出されます。つまりブロックか終了するまで
次の接続は accept されません。
並列に通信したい場合は
スレッドのような並列実行機構を使う必要があります。
@param sockets......待ち受けたいサーバソケットの配列
@see Socket.tcp_server_loop, Socket.unix_server_loop... -
Socket
. getaddrinfo(nodename , servname , family=nil , socktype=nil , protocol=nil , flags=nil) -> Array (18607.0) -
2553で定義された getaddrinfo() の機能を提供するクラスメソッド。この関数は gethostbyname() や getservbyname() の代わりとして用意されており、 IP のバージョンに依存しないプログラムを書くための標準的な API です。
...名を指定します。 必須引数です。 (lib:socket#host_formatを参照)
@param servname サービス名を指定します。 必須引数です。 (lib:socket#service_formatを参照)
@param family アドレスファミリー。Socket::Constants::AF_INET など、AF_ で始まる定数を......指定します。
@param socktype ソケットタイプ。 Socket::Constants::SOCK_STREAM など、 SOCK_ で始まる定数を指定します。
@param protocol プロトコル。Socket::Constants::IPPROTO_IP など、IPPROTO_ で始まる定数を指定します。
@param flags getaddrinfo(3)......数に指定する addrinfo 構造体の ai_flags メンバに相当する整数。 Socket::AI_PASSIVEなど。
@return 7つの要素からなるアドレス情報に関する配列を返します。
@raise SocketError getaddrinfo(3)がエラーを返したときに発生する例外です
@see Ad... -
Socket
. unix _ server _ loop(path) {|socket , client _ addrinfo| . . . } -> () (18607.0) -
Unix サーバソケットを生成し、 新しい接続を受け入れるごとにブロックを呼び出します。
...全です。
つまり、 /tmp/malicious-users-directory/socket という名前のパスは
使うべきではありません。
/tmp にスティッキービットが立っている場合、/tmp/socket や
/tmp/your-private-directory/socket というパス名は安全と考えて良いでしょう... -
BasicSocket
. do _ not _ reverse _ lookup=(bool) (18343.0) -
BasicSocket#do_not_reverse_lookup の値を変更します。
...icSocket#do_not_reverse_lookup の値を変更します。
@param bool この値が真ならアドレスからホスト名への逆引きを行わなくなります。
例:
require 'socket'
p TCPSocket.new('localhost', 'telnet').addr
TCPSocket.do_not_reverse_lookup = true
p TCPSocket.n... -
UDPSocket
# recvfrom _ nonblock(maxlen , flags=0) -> [String , Array] (18343.0) -
ソケットをノンブロッキングモードに設定した後、 recvfrom(2) でソケットからデータを受け取ります。
...ットからデータを受け取ります。
maxlen で受け取るデータの最大バイト数を指定します。
flags はフラグで、Socket::MSG_* の bitwise OR を渡します。
詳しくは recvfrom(2) を参照してください。
返り値はデータの文字列と送り元の......可能であることを意味する例外には、IO::WaitReadable が extend
されています。
require 'socket'
s1 = UDPSocket.new
s1.bind("127.0.0.1", 0)
s2 = UDPSocket.new
s2.bind("127.0.0.1", 0)
s2.connect(*s1.addr.values_at(3,1))
s1.connect(*s2.addr.values_at(3,1))
s1.sen......emulate blocking recvfrom
p s2.recvfrom_nonblock(10)
#=> ["aaa", ["AF_INET", 33302, "localhost.localdomain", "127.0.0.1"]]
rescue IO::WaitReadable
IO.select([s2])
retry
end
@param maxlen 受け取るデータの最大バイト数
@param flags フラグ
@see IPSocket#recvfrom... -
Socket
:: AncillaryData . ip _ pktinfo(addr , ifindex , spec _ dst=addr) -> Socket :: AncillaryData (9967.0) -
type が IP_PKTINFO である AncillaryData を生成します。
...によっては使えない場合があります。
require 'socket'
addr = Addrinfo.ip("127.0.0.1")
ifindex = 0
spec_dst = Addrinfo.ip("127.0.0.1")
p Socket::AncillaryData.ip_pktinfo(addr, ifindex, spec_dst)
#=> #<Socket::AncillaryData: INET IP PKTINFO 127.0.0.1 ifindex:0 spec_dst:127.......0.0.1>
@param addr アドレス(文字列もしくは Addrinfo)
@param ifindex インターフェースのインデックス(整数)
@param spec_dst パケットのローカルアドレス(文字列もしくは Addrinfo)
@see Socket::AncillaryData#ip_pktinfo,
Socket::Constants::IP_PKTINFO... -
Addrinfo
. new(sockaddr , family=Socket :: PF _ UNSPEC , socktype=0 , protocol=0) -> Addrinfo (9943.0) -
新たな Addrinfo オブジェクトを返します。
...e, protocol
は socket(2) のパラメータに対応します。
sockaddr には文字列もしくは配列を指定します。
配列の場合は IPSocket#addr や UNIXSocket#addr の
値と互換でなければなりません。
文字列の場合は Socket.sockaddr_in や
Socket.unpack_sockadd......* ["AF_INET6", 42304, "ip6-localhost", "::1"]
* ["AF_UNIX", "/tmp/sock"]
* Socket.sockaddr_in("smtp", "2001:DB8::1")
* Socket.sockaddr_in(80, "172.18.22.42")
* Socket.sockaddr_in(80, "www.ruby-lang.org")
* Socket.sockaddr_un("/tmp/sock")
配列で AF_INET/AF_INET6 を指定した場合、......は Socket::PF_INET のようなプロコルファミリーを指定します。
文字列やシンボル名を指定することができます(PF_ というプレフィクスは
省略することもできます)。例えば :INET, :INET6, :UNIX, "PF_INET" などです。
socktype は Socket::SO... -
Addrinfo
. foreach(nodename , service , family=nil , socktype=nil , protocol=nil , flags=0) {|addrinfo| . . . } -> [Addrinfo] (9907.0) -
Addrinfo.getaddrinfo で得られる配列の各要素を繰り返します。
Addrinfo.getaddrinfo で得られる配列の各要素を繰り返します。
ブロックを省略した場合は Enumerator を返します。
@param nodename ノード名文字列(ホスト名もしくは IP アドレス)
@param service サービス名(文字列もしくはポート番号の整数)
@param family プロトコルファミリー(整数、文字列、シンボル、もしくは nil)
@param socktype ソケットタイプ(整数、文字列、シンボル、もしくは nil)
@param protocol プロトコル(整数、もしくは nil)
@param flags フラグ(... -
Socket
:: AncillaryData . ipv6 _ pktinfo(addr , ifindex) -> Socket :: AncillaryData (9664.0) -
type が IPV6_PKTINFO である AncillaryData を生成します。
...ta を生成します。
IPV6_PKTINFO は 3542 で定義されています。
require 'socket'
addr = Addrinfo.ip("::1")
ifindex = 0
p Socket::AncillaryData.ipv6_pktinfo(addr, ifindex)
#=> #<Socket::AncillaryData: INET6 IPV6 PKTINFO ::1 ifindex:0>
@param addr アドレス(文字列も......しくは Addrinfo)
@param ifindex インターフェースのインデックス(整数)
@see Socket::AncillaryData#ipv6_pktinfo,
Socket::Constants::IPV6_PKTINFO... -
Socket
:: AncillaryData # ip _ pktinfo -> [Addrinfo , Integer , Addrinfo] (9643.0) -
自身の type が IP_PKTINFO である場合、保持しているデータ (アドレス、インターフェースのインデックス、ローカルアドレス) を3要素の配列で返します。
...張であり、システムによっては使えない場合があります。
require 'socket'
addr = Addrinfo.ip("127.0.0.1")
ifindex = 0
spec_dest = Addrinfo.ip("127.0.0.1")
ancdata = Socket::AncillaryData.ip_pktinfo(addr, ifindex, spec_dest)
p ancdata.ip_pktinfo
#=> [#<Addrinfo:......127.0.0.1>, 0, #<Addrinfo: 127.0.0.1>]
@raise TypeError level, type が IPPROTO_IP, IP_PKTINFO でない場合に
発生します。
@see Socket::AncillaryData.ip_pktinfo,
Socket::Constants::IP_PKTINFO... -
Addrinfo
# ipv6 _ to _ ipv4 -> Addrinfo|nil (9607.0) -
IPv6 の v4 マップド/互換アドレスを v4 のアドレスに変換します。
...ップド/互換アドレスを v4 のアドレスに変換します。
それ以外のアドレスの場合 nil を返します。
require 'socket'
Addrinfo.ip("::192.0.2.3").ipv6_to_ipv4 #=> #<Addrinfo: 192.0.2.3>
Addrinfo.ip("::ffff:192.0.2.3").ipv6_to_ipv4 #=> #<Addrinfo: 192.0.2.3... -
Socket
:: Ifaddr # netmask -> Addrinfo | nil (9607.0) -
self のネットマスクを Addrinfo オブジェクトで返します。 self が利用できない場合は nil を返します。
self のネットマスクを Addrinfo オブジェクトで返します。
self が利用できない場合は nil を返します。 -
Socket
:: AncillaryData # ipv6 _ pktinfo -> [Addrinfo , Integer] (9361.0) -
自身の type が IPV6_PKTINFO である場合、保持しているデータ (アドレス、インターフェースのインデックス) を2要素の配列で返します。
...。
require 'socket'
addr = Addrinfo.ip("::1")
ifindex = 0
ancdata = Socket::AncillaryData.ipv6_pktinfo(addr, ifindex)
p ancdata.ipv6_pktinfo #=> [#<Addrinfo: ::1>, 0]
@see Socket::AncillaryData.ipv6_pktinfo,
Socket::AncillaryData#ipv6_pktinfo_addr,
Socket::AncillaryData#ipv......6_pktinfo_ifindex,
Socket::Constants::IPV6_PKTINFO... -
Addrinfo
# canonname -> String|nil (9307.0) -
カノニカル名を文字列で返します。
...返します。
カノニカル名は Addrinfo.getaddrinfo に Socket::AI_CANONINAME
を指定した場合にセットされます。
require 'socket'
list = Addrinfo.getaddrinfo("www.ruby-lang.org", 80, :INET, :STREAM, nil, Socket::AI_CANONNAME)
p list[0] #=> #<Addrinfo: 221.186.184.68:80... -
Addrinfo
# getnameinfo(flags=0) -> [String , String] (9307.0) -
ノード名とサービスを文字列の配列で返します。
... Socket::NI_??? という名前の定数のビット OR を渡します。
require 'socket'
Addrinfo.tcp("127.0.0.1", 80).getnameinfo
#=> ["localhost", "www"]
Addrinfo.tcp("127.0.0.1", 80).getnameinfo(Socket::NI_NUMERICSERV)
#=> ["localhost", "80"]
@param flags フラグ
@raise SocketEr......ror getnameinfo(3) がエラーを起こした場合に生じる例外
@see Socket.getnameinfo... -
Addrinfo
# ip? -> bool (9307.0) -
アドレスが IP (v4/v6) のものならば true を返します。
...アドレスが IP (v4/v6) のものならば true を返します。
require 'socket'
Addrinfo.tcp("127.0.0.1", 80).ip? #=> true
Addrinfo.tcp("::1", 80).ip? #=> true
Addrinfo.unix("/tmp/sock").ip? #=> false
@see Addrinfo#ipv4?, Addrinfo#ipv6?, Addrinfo#unix?... -
Addrinfo
# ipv4? -> bool (9307.0) -
アドレスが IPv4 のものならば true を返します。
...アドレスが IPv4 のものならば true を返します。
@see Addrinfo#ip?, Addrinfo#ipv6?
require 'socket'
Addrinfo.tcp("127.0.0.1", 80).ipv4? #=> true
Addrinfo.tcp("::1", 80).ipv4? #=> false
Addrinfo.unix("/tmp/sock").ipv4? #=> false... -
Addrinfo
# ipv4 _ private? -> bool (9307.0) -
IPv4 のプライベートアドレス(10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) であれば真を返します。
IPv4 のプライベートアドレス(10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16)
であれば真を返します。 -
Addrinfo
# ipv6? -> bool (9307.0) -
アドレスが IPv6 のものならば true を返します。
...アドレスが IPv6 のものならば true を返します。
require 'socket'
Addrinfo.tcp("127.0.0.1", 80).ipv6? #=> false
Addrinfo.tcp("::1", 80).ipv6? #=> true
Addrinfo.unix("/tmp/sock").ipv6? #=> false
@see Addrinfo#ipv4?, Addrinfo#ip?... -
Addrinfo
# ipv6 _ unspecified? -> bool (9307.0) -
IPv6 の不特定アドレス(unspecified address)(::)であれば真を返します。
IPv6 の不特定アドレス(unspecified address)(::)であれば真を返します。 -
Addrinfo
# ipv6 _ v4compat? -> bool (9307.0) -
IPv6 の v4互換アドレス(::/80)であれば真を返します。
IPv6 の v4互換アドレス(::/80)であれば真を返します。 -
Addrinfo
# ipv6 _ v4mapped? -> bool (9307.0) -
IPv6 の v4にマップされたアドレス(::ffff:0:0/80)であれば真を返します。
IPv6 の v4にマップされたアドレス(::ffff:0:0/80)であれば真を返します。 -
Addrinfo
# unix? -> bool (9307.0) -
アドレスが Unix domain socket のものならば true を返します。
...アドレスが Unix domain socket のものならば true を返します。
require 'socket'
Addrinfo.tcp("127.0.0.1", 80).unix? #=> false
Addrinfo.tcp("::1", 80).unix? #=> false
Addrinfo.unix("/tmp/sock").unix? #=> true
@see Addrinfo#ip?... -
Addrinfo
. foreach(nodename , service , family=nil , socktype=nil , protocol=nil , flags=0) -> Enumerator (9307.0) -
Addrinfo.getaddrinfo で得られる配列の各要素を繰り返します。
Addrinfo.getaddrinfo で得られる配列の各要素を繰り返します。
ブロックを省略した場合は Enumerator を返します。
@param nodename ノード名文字列(ホスト名もしくは IP アドレス)
@param service サービス名(文字列もしくはポート番号の整数)
@param family プロトコルファミリー(整数、文字列、シンボル、もしくは nil)
@param socktype ソケットタイプ(整数、文字列、シンボル、もしくは nil)
@param protocol プロトコル(整数、もしくは nil)
@param flags フラグ(... -
Socket
:: AncillaryData # ipv6 _ pktinfo _ ifindex -> Integer (9061.0) -
自身の type が IPV6_PKTINFO である場合、保持しているデータ (アドレス、インターフェースのインデックス) のインデックスを返します。
...e 'socket'
addr = Addrinfo.ip("::1")
ifindex = 0
ancdata = Socket::AncillaryData.ipv6_pktinfo(addr, ifindex)
p ancdata.ipv6_pktinfo_ifindex #=> 0
@see Socket::AncillaryData.ipv6_pktinfo,
Socket::AncillaryData#ipv6_pktinfo,
Socket::AncillaryData#ipv6_pktinfo_addr,
Socket::C... -
Socket
:: UDPSource . new(remote _ addr , local _ addr) {|msg| . . . } -> Socket :: UDPSource (949.0) -
Socket::UDPSource オブジェクトを生成します。
...
Socket::UDPSource オブジェクトを生成します。
このメソッドはユーザは直接使いません。Socket.udp_server_loop が
内部で用います。
@param remote_addr リモートのアドレス(Addrinfo オブジェクト)
@param local_addr ローカルのアドレス(Addrinfo... -
BasicSocket
# recvmsg(maxmesglen=nil , flags=0 , maxcontrollen=nil , opts={}) -> [String , Addrinfo , Integer , *Socket :: AncillaryData] (907.0) -
recvmsg(2) を用いてメッセージを受け取ります。
...ックします。ノンブロッキング方式で通信したい
場合は BasicSocket#recvmsg_nonblock を用います。
maxmesglen, maxcontrollen で受け取るメッセージおよび補助データ
(Socket::AncillaryData)の最大長をバイト単位で指定します。
省略した場合......は必要なだけ内部バッファを拡大して
データが切れないようにします。
flags では Socket::MSG_* という名前の定数の biwsise OR を取った
ものを渡します。
opts にはその他のオプションを渡します。今のところ :scm_right => bool
と......します。詳しくは Socket::AncillaryData#unix_rights
を参照してください。
返り値は配列で得られます。
返り値の配列の最初の要素は受け取ったメッセージを表す文字列です。
2番目の要素は connection-less socket の場合には送り元の... -
BasicSocket
# send(mesg , flags , dest _ sockaddr = nil) -> Integer (607.0) -
ソケットを介してデータを送ります。flags に関しては send(2) を参照してください。connect していないソケット に対しては送り先である dest_sockaddr を指定する必要があります。実際に送っ たデータの長さを返します。
...レス構造体を pack した文字列」を指定します。
@raise Errno::EXXX データの送信に失敗した場合に発生します。
例:
require 'socket'
s = UDPSocket.new
sockaddr = Socket.sockaddr_in("discard", "localhost")
s.send("The king has donkey ears!", 0, sockaddr)... -
BasicSocket
# sendmsg(mesg , flags=0 , dest _ sockaddr=nil , *controls) -> Integer (607.0) -
sendmsg(2) を用いてメッセージを送ります。
...ンブロッキング方式で通信したい
場合は BasicSocket#sendmsg_nonblock を用います。
ソケットが connection-less の場合は dest_sockaddr で
通信先のアドレスを指定しなければなりません。Socket.sockaddr_in
の返り値や Addrinfo オブジェクトを......ます。
Socket::AncillaryData のインスタンスや
3要素(cmsg_level, cmsg_type, cmsg_data) の配列を用いることができます。
送ったバイト数を返します。
# UnixSocket#send_io の実装例
# use Socket::AncillaryData.
require 'socket'
ancdata = Socket::Ancill......aryData.int(:UNIX, :SOCKET, :RIGHTS, io.fileno)
sock.sendmsg("a", 0, nil, ancdata)
# use 3-element array.
ancdata = [:SOCKET, :RIGHTS, [io.fileno].pack("i!")]
sock.sendmsg("\0", 0, nil, ancdata)
@param mesg メッセージ文字列
@param flags フラグ(Socket::MSG_* という定数の... -
Socket
# recvfrom(maxlen , flags=0) -> [String , Addrinfo] (607.0) -
ソケットからデータを受け取ります。
...ソケットからデータを受け取ります。
Socket#recv と同様ですが、返り値として
データ文字列と相手ソケットのアドレスのペアが返されます。
flags には Socket::MSG_* という定数の bitwise OR を渡します。
詳しくは recvfrom(2) を参......。詳しくは
Errno と man を見てください。
例:
require 'socket'
s1 = Socket.new(Socket::AF_INET, Socket::SOCK_DGRAM, 0)
s2 = Socket.new(Socket::AF_INET, Socket::SOCK_DGRAM, 0)
s1.bind(Socket.sockaddr_in(0, "0.0.0.0"))
s2.send("foo", 0, s1.getsockname)
mesg, sockaddr......= s1.recvfrom(10)
p mesg #=> "foo"
p sockaddr #=> "\002\000\200r\177\000\000\001\000\000\000\000\000\000\000\000"
p Socket.unpack_sockaddr_in(sockaddr) #=> [32882, "127.0.0.1"]... -
UDPSocket
# send(mesg , flags , sockaddr _ to) -> Integer (607.0) -
UDP ソケットを介してデータを送ります。
...ります。
flags には Socket::MSG_* という定数の bitwise OR を渡します。
詳しい意味は send(2) を参照してください。
host, port の対、もしくは sockaddr_to で送り先を指定します。
送り先を省略した場合は UDPSocket#connect で接続した
先......sockaddr_to にはlib:socket#pack_string もしくは
Addrinfo オブジェクトを指定します。
host, port に関しては lib:socket#host_format、
lib:socket#service_formatを参照してください。
2 引数、3 引数の形式の場合の動作は、
BasicSocket#send と同じです... -
UDPSocket
. new(address _ family=Socket :: AF _ INET) -> UDPSocket (607.0) -
新しい UDP ソケットを返します。
...ss_family には Socket::AF_INET のような整数、:INET のような
シンボル、"INET" のような文字列を指定することができます。
require 'socket'
UDPSocket.new # => #<UDPSocket:fd 3>
UDPSocket.new(Socket::AF_INET6) # => #<UDPSocket:fd 4>
@param a... -
UDPSocket
. open(address _ family=Socket :: AF _ INET) -> UDPSocket (607.0) -
新しい UDP ソケットを返します。
...ss_family には Socket::AF_INET のような整数、:INET のような
シンボル、"INET" のような文字列を指定することができます。
require 'socket'
UDPSocket.new # => #<UDPSocket:fd 3>
UDPSocket.new(Socket::AF_INET6) # => #<UDPSocket:fd 4>
@param a... -
IPSocket
# recvfrom(maxlen , flags = 0) -> Array (391.0) -
recv と同様にソケットからデータを受け取りますが、 戻り値は文字列と相手ソケットのアドレス (形式は IPSocket#addr 参照) のペアです。引数につ いては BasicSocket#recv と同様です。
...からデータを受け取りますが、
戻り値は文字列と相手ソケットのアドレス (形式は
IPSocket#addr 参照) のペアです。引数につ
いては BasicSocket#recv と同様です。
@param maxlen 受け取る文字列の最大の長さを指定します。
@param flags......X recvfrom(2) がエラーになった場合などに発生します。
例:
require 'socket'
s1 = UDPSocket.new
s1.bind("0.0.0.0", 0) # 適当に空いている port を割り当てる
s2 = UDPSocket.new
s2.send("foo", 0, s1.getsockname)
mesg, inet_addr = s1.recvfrom(100)
p mesg...