クラス
- Addrinfo (8)
- Socket (14)
-
Socket
:: AncillaryData (2) -
Socket
:: UDPSource (1)
キーワード
-
accept
_ loop (1) - foreach (2)
- getaddrinfo (2)
- getifaddrs (1)
- getnameinfo (1)
- ip (1)
-
ip
_ address _ list (1) -
ip
_ pktinfo (1) -
ipv6
_ pktinfo (1) - new (2)
- tcp (1)
-
tcp
_ server _ loop (2) -
tcp
_ server _ sockets (4) - udp (1)
- unix (1)
-
unix
_ server _ loop (1) -
unix
_ server _ socket (2)
検索結果
先頭5件
- Addrinfo
. getaddrinfo(nodename , service , family=nil , socktype=nil , protocol=nil , flags=0) -> [Addrinfo] - Addrinfo
. foreach(nodename , service , family=nil , socktype=nil , protocol=nil , flags=0) {|addrinfo| . . . } -> [Addrinfo] - Addrinfo
. unix(path , socktype=Socket :: SOCK _ STREAM) -> Addrinfo - Addrinfo
. ip(host) -> Addrinfo - Addrinfo
. tcp(host , port) -> Addrinfo
-
Addrinfo
. getaddrinfo(nodename , service , family=nil , socktype=nil , protocol=nil , flags=0) -> [Addrinfo] (81751.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... -
Addrinfo
. foreach(nodename , service , family=nil , socktype=nil , protocol=nil , flags=0) {|addrinfo| . . . } -> [Addrinfo] (63664.0) -
Addrinfo.getaddrinfo で得られる配列の各要素を繰り返します。
Addrinfo.getaddrinfo で得られる配列の各要素を繰り返します。
ブロックを省略した場合は Enumerator を返します。
@param nodename ノード名文字列(ホスト名もしくは IP アドレス)
@param service サービス名(文字列もしくはポート番号の整数)
@param family プロトコルファミリー(整数、文字列、シンボル、もしくは nil)
@param socktype ソケットタイプ(整数、文字列、シンボル、もしくは nil)
@param protocol プロトコル(整数、もしくは nil)
@param flags フラグ(... -
Addrinfo
. unix(path , socktype=Socket :: SOCK _ STREAM) -> Addrinfo (63451.0) -
Unix ソケットアドレスに対応する Addrinfo オブジェクトを返します。
...トアドレスに対応する Addrinfo オブジェクトを返します。
socktype でソケットタイプを指定します。
require 'socket'
Addrinfo.unix("/tmp/sock") #=> #<Addrinfo: /tmp/sock SOCK_STREAM>
Addrinfo.unix("/tmp/sock", :DGRAM) #=> #<Addrinfo: /tmp/sock SOCK_DG... -
Addrinfo
. ip(host) -> Addrinfo (63415.0) -
IP アドレスに対する Addrinfo オブジェクトを返します。
...port, socktype, protocol は 0 で初期化されます。
つまりこの返り値はソケットを生成するには不適です。
require 'socket'
Addrinfo.ip("localhost") #=> #<Addrinfo: 127.0.0.1 (localhost)>
@param host ホスト(IP アドレスもしくはホスト名)
@see Addrinfo.... -
Addrinfo
. tcp(host , port) -> Addrinfo (63397.0) -
TCP アドレスに対する Addrinfo オブジェクトを返します。
...TCP アドレスに対する Addrinfo オブジェクトを返します。
require 'socket'
Addrinfo.tcp("localhost", "smtp")
#=> #<Addrinfo: 127.0.0.1:25 TCP (localhost:smtp)>
@param host ホスト(IP アドレスもしくはホスト名)
@param port ポート番号(整数)もしくは... -
Addrinfo
. udp(host , port) -> Addrinfo (63397.0) -
UDP アドレスに対する Addrinfo オブジェクトを返します。
...UDP アドレスに対する Addrinfo オブジェクトを返します。
require 'socket'
Addrinfo.udp("localhost", "daytime")
#=> #<Addrinfo: 127.0.0.1:13 UDP (localhost:daytime)>
@param host ホスト(IP アドレスもしくはホスト名)
@param port ポート番号(整数)もし... -
Addrinfo
. new(sockaddr , family=Socket :: PF _ UNSPEC , socktype=0 , protocol=0) -> Addrinfo (63379.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) -> Enumerator (63064.0) -
Addrinfo.getaddrinfo で得られる配列の各要素を繰り返します。
Addrinfo.getaddrinfo で得られる配列の各要素を繰り返します。
ブロックを省略した場合は Enumerator を返します。
@param nodename ノード名文字列(ホスト名もしくは IP アドレス)
@param service サービス名(文字列もしくはポート番号の整数)
@param family プロトコルファミリー(整数、文字列、シンボル、もしくは nil)
@param socktype ソケットタイプ(整数、文字列、シンボル、もしくは nil)
@param protocol プロトコル(整数、もしくは nil)
@param flags フラグ(... -
Socket
. getaddrinfo(nodename , servname , family=nil , socktype=nil , protocol=nil , flags=nil) -> Array (18364.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
. accept _ loop(sockets) {|sock , client _ addrinfo| . . . } -> () (331.0) -
sockets でサーバソケットを受け取り、接続を待ち受け、 クライアントとの接続が確立するたびにブロックにその接続 ソケットを渡し呼び出します。
...sockets でサーバソケットを受け取り、接続を待ち受け、
クライアントとの接続が確立するたびにブロックにその接続
ソケットを渡し呼び出します。
ブロックの引数はクライアントと接続したソケットオブジェクトと
Addrinfo......
Socket.tcp_server_loop と同様、ブロックは
逐次的に呼び出されます。つまりブロックか終了するまで
次の接続は accept されません。
並列に通信したい場合は
スレッドのような並列実行機構を使う必要があります。
@param sockets......待ち受けたいサーバソケットの配列
@see Socket.tcp_server_loop, Socket.unix_server_loop... -
Socket
. unix _ server _ loop(path) {|socket , client _ addrinfo| . . . } -> () (331.0) -
Unix サーバソケットを生成し、 新しい接続を受け入れるごとにブロックを呼び出します。
...全です。
つまり、 /tmp/malicious-users-directory/socket という名前のパスは
使うべきではありません。
/tmp にスティッキービットが立っている場合、/tmp/socket や
/tmp/your-private-directory/socket というパス名は安全と考えて良いでしょう... -
Socket
. ip _ address _ list -> [Addrinfo] (313.0) -
ローカルの IP アドレスを配列で返します。
ローカルの IP アドレスを配列で返します。 -
Socket
. tcp _ server _ loop(host , port) {|sock , addr| . . . } -> () (100.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| . . . } -> () (100.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 _ sockets(host , port) -> [Socket] (82.0) -
TCP/IP で host:port で待ち受けるサーバ側のソケットを 作成します。
...番号を持ちます。
require 'socket'
# tcp_server_sockets returns は2つのソケットを返す
sockets = Socket.tcp_server_sockets(1296)
p sockets #=> [#<Socket:fd 3>, #<Socket:fd 4>]
# それぞれは IPv4 と IPv6 のソケット
sockets.each {|s| p s.local_address }
#=>......
sockets = Socket.tcp_server_sockets(0)
sockets.each {|s| p s.local_address }
#=> #<Addrinfo: [::]:53114 TCP>
# #<Addrinfo: 0.0.0.0:53114 TCP>
# ブロックにソケットの配列が渡される
Socket.tcp_server_sockets(0) {|sockets|
p sockets #=> [#<Socket:fd 3>, #<Socket:fd......4>]
}
@param host 割り当てるホスト名
@param port 割り当てるポート番号
@see Socket.tcp_server_loop... -
Socket
. tcp _ server _ sockets(host , port) {|sockets| . . . } -> object (82.0) -
TCP/IP で host:port で待ち受けるサーバ側のソケットを 作成します。
...番号を持ちます。
require 'socket'
# tcp_server_sockets returns は2つのソケットを返す
sockets = Socket.tcp_server_sockets(1296)
p sockets #=> [#<Socket:fd 3>, #<Socket:fd 4>]
# それぞれは IPv4 と IPv6 のソケット
sockets.each {|s| p s.local_address }
#=>......
sockets = Socket.tcp_server_sockets(0)
sockets.each {|s| p s.local_address }
#=> #<Addrinfo: [::]:53114 TCP>
# #<Addrinfo: 0.0.0.0:53114 TCP>
# ブロックにソケットの配列が渡される
Socket.tcp_server_sockets(0) {|sockets|
p sockets #=> [#<Socket:fd 3>, #<Socket:fd......4>]
}
@param host 割り当てるホスト名
@param port 割り当てるポート番号
@see Socket.tcp_server_loop... -
Socket
. tcp _ server _ sockets(port) -> [Socket] (82.0) -
TCP/IP で host:port で待ち受けるサーバ側のソケットを 作成します。
...番号を持ちます。
require 'socket'
# tcp_server_sockets returns は2つのソケットを返す
sockets = Socket.tcp_server_sockets(1296)
p sockets #=> [#<Socket:fd 3>, #<Socket:fd 4>]
# それぞれは IPv4 と IPv6 のソケット
sockets.each {|s| p s.local_address }
#=>......
sockets = Socket.tcp_server_sockets(0)
sockets.each {|s| p s.local_address }
#=> #<Addrinfo: [::]:53114 TCP>
# #<Addrinfo: 0.0.0.0:53114 TCP>
# ブロックにソケットの配列が渡される
Socket.tcp_server_sockets(0) {|sockets|
p sockets #=> [#<Socket:fd 3>, #<Socket:fd......4>]
}
@param host 割り当てるホスト名
@param port 割り当てるポート番号
@see Socket.tcp_server_loop... -
Socket
. tcp _ server _ sockets(port) {|sockets| . . . } -> object (82.0) -
TCP/IP で host:port で待ち受けるサーバ側のソケットを 作成します。
...番号を持ちます。
require 'socket'
# tcp_server_sockets returns は2つのソケットを返す
sockets = Socket.tcp_server_sockets(1296)
p sockets #=> [#<Socket:fd 3>, #<Socket:fd 4>]
# それぞれは IPv4 と IPv6 のソケット
sockets.each {|s| p s.local_address }
#=>......
sockets = Socket.tcp_server_sockets(0)
sockets.each {|s| p s.local_address }
#=> #<Addrinfo: [::]:53114 TCP>
# #<Addrinfo: 0.0.0.0:53114 TCP>
# ブロックにソケットの配列が渡される
Socket.tcp_server_sockets(0) {|sockets|
p sockets #=> [#<Socket:fd 3>, #<Socket:fd......4>]
}
@param host 割り当てるホスト名
@param port 割り当てるポート番号
@see Socket.tcp_server_loop... -
Socket
:: AncillaryData . ip _ pktinfo(addr , ifindex , spec _ dst=addr) -> Socket :: AncillaryData (82.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... -
Socket
. getifaddrs -> [Socket :: Ifaddr] (46.0) -
インターフェイスのアドレスを Socket::Ifaddr の配列で返します。
...スを Socket::Ifaddr の配列で返します。
本メソッドはマルチキャスト通信が可能なインターフェイスを見つけるために使う事ができます。
require 'socket'
pp Socket.getifaddrs.reject {|ifaddr|
!ifaddr.addr.ip? || (ifaddr.flags & Socket::IFF_MUL......nfo: fe80::216:3eff:fe95:88bb%eth0>]]
例(GNU/Linux):
require 'socket'
pp Socket.getifaddrs
#=> [#<Socket::Ifaddr lo UP,LOOPBACK,RUNNING,0x10000 PACKET[protocol=0 lo hatype=772 HOST hwaddr=00:00:00:00:00:00]>,
# #<Socket::Ifaddr eth0 UP,BROADCAST,RUNNING,MULTICAST,0x10000 PACKET[protoc......eth0 hatype=1 HOST hwaddr=ff:ff:ff:ff:ff:ff]>,
# #<Socket::Ifaddr sit0 NOARP PACKET[protocol=0 sit0 hatype=776 HOST hwaddr=00:00:00:00]>,
# #<Socket::Ifaddr lo UP,LOOPBACK,RUNNING,0x10000 127.0.0.1 netmask=255.0.0.0>,
# #<Socket::Ifaddr eth0 UP,BROADCAST,RUNNING,MULTICAST,0x10000 221... -
Socket
. unix _ server _ socket(path) -> Socket (46.0) -
Unix サーバソケットを生成します。
...ます。
require 'socket'
socket = Socket.unix_server_socket("/tmp/s")
p socket #=> #<Socket:fd 3>
p socket.local_address #=> #<Addrinfo: /tmp/s SOCK_STREAM>
Socket.unix_server_socket("/tmp/sock") {|s|
p s #=> #<Socket:fd 3>
p s.local_a... -
Socket
. unix _ server _ socket(path) {|sock| . . . } -> object (46.0) -
Unix サーバソケットを生成します。
...ます。
require 'socket'
socket = Socket.unix_server_socket("/tmp/s")
p socket #=> #<Socket:fd 3>
p socket.local_address #=> #<Addrinfo: /tmp/s SOCK_STREAM>
Socket.unix_server_socket("/tmp/sock") {|s|
p s #=> #<Socket:fd 3>
p s.local_a... -
Socket
:: AncillaryData . ipv6 _ pktinfo(addr , ifindex) -> Socket :: AncillaryData (46.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
:: UDPSource . new(remote _ addr , local _ addr) {|msg| . . . } -> Socket :: UDPSource (46.0) -
Socket::UDPSource オブジェクトを生成します。
...
Socket::UDPSource オブジェクトを生成します。
このメソッドはユーザは直接使いません。Socket.udp_server_loop が
内部で用います。
@param remote_addr リモートのアドレス(Addrinfo オブジェクト)
@param local_addr ローカルのアドレス(Addrinfo... -
Socket
. getnameinfo(sa , flags = 0) -> Array (28.0) -
2553 で定義された getnameinfo() の機能を提供するク ラスメソッド。 gethostbyaddr() や getservbyport() の代 わりとして用意されています。IPのバージョンに依存しないプログラムを 書くための標準的なAPIです。
...ise SocketError getnameinfo(3) がエラーを起こした場合に生じる例外
@see Addrinfo#getnameinfo
=== 引数 sa について
引数 sa には文字列か配列を与えます。文字列の場合は sockaddr 構造体
のパック文字列を与えます。具体的には BasicSocket#ge......素が4つの場合:
[アドレスファミリー, サービス, 任意, アドレスを表す文字列]
アドレスファミリーには Socket::AF_INET 等の定数の他に文字列
で "AF_INET" もしくは "AF_INET6" もしくは nil が
指定できます。ただしIPv6が使えな......なります。アドレスファミリーに
nil を指定することは Socket::AF_UNSPEC を指定すること
と等価です。
サービス、ホストの指定に関しては lib:socket#service_format、
lib:socket#host_formatを参照してください。
要素が3つの場合でも、...