種類
- インスタンスメソッド (8)
- 特異メソッド (6)
クラス
- Addrinfo (2)
- BasicSocket (1)
- IPSocket (3)
- Socket (5)
- UDPSocket (3)
キーワード
- afamily (1)
- connect (1)
-
connect
_ nonblock (1) -
do
_ not _ reverse _ lookup= (1) - getaddrinfo (1)
- gethostbyaddr (1)
- new (2)
- open (1)
- peeraddr (1)
- recvfrom (2)
-
recvfrom
_ nonblock (1)
検索結果
先頭5件
-
IPSocket
# addr -> Array (54460.0) -
ソケットの接続情報を表す配列を返します。配列の各要素は第1要 素が文字列 "AF_INET", "AF_INET6" など、第2要素が port 番号、第3要素がホストを表 す文字列、第4要素がホストの IP アドレスを表す文字列 (octet decimal や hexadecimal) です。
...Errno::EXXX getsockname(2) が 0 未満の値を返した場合に発生します。
例:
require 'socket'
serv = TCPServer.new("localhost", 0)
p serv.addr #=> ["AF_INET", 46102, "localhost.localdomain", "127.0.0.1"]
c = TCPSocket.new(*serv.addr.values_at(3,1))
s = serv.accept... -
Socket
. gethostbyaddr(host , type = Socket :: AF _ INET) -> Array (18676.0) -
sockaddr 構造体をパックした文字列からホスト情報を返します。 ホスト情報の構造は Socket.gethostbyname と同じです。 type には、アドレスタイプ(デフォルトは Socket::AF_INET)を指定します。
...は Socket.gethostbyname と同じです。
type には、アドレスタイプ(デフォルトは
Socket::AF_INET)を指定します。
@param host ホストを文字列で指定します。
@param type アドレスタイプ(デフォルトはSocket::AF_INET)を指定します。
@raise SocketEr... -
Socket
. getaddrinfo(nodename , servname , family=nil , socktype=nil , protocol=nil , flags=nil) -> Array (18415.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... -
IPSocket
# peeraddr -> Array (18409.0) -
接続相手先ソケットの情報を表す配列を返します。配列の各要素は IPSocket#addr メソッドが返す配列 と同じです。
...表す配列を返します。配列の各要素は
IPSocket#addr メソッドが返す配列
と同じです。
@raise Errno::EXXX getpeername(2) が 0 未満の値を返した場合に発生します。
例:
require 'socket'
TCPSocket.open("localhost", "http") {|s|
p s.peeraddr #=>... -
Addrinfo
. new(sockaddr , family=Socket :: PF _ UNSPEC , socktype=0 , protocol=0) -> Addrinfo (9715.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
# afamily -> Integer (9025.0) -
アドレスファミリーを整数で返します。
...アドレスファミリーを整数で返します。
require 'socket'
Addrinfo.tcp("localhost", 80).afamily == Socket::AF_INET #=> true... -
UDPSocket
. new(address _ family=Socket :: AF _ INET) -> UDPSocket (649.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 (649.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... -
Socket
# recvfrom(maxlen , flags=0) -> [String , Addrinfo] (343.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"]... -
Socket
# connect(server _ sockaddr) -> 0 (325.0) -
connect(2) でソケットを接続します。
...connect(2) でソケットを接続します。
server_sockaddr は、
lib:socket#pack_string
もしくは Addrinfo オブジェクト
です。
0 を返します。
@param server_sockaddr 接続先アドレス
@raise Errno::EXXX connect(2) がエラーを報告した場合に発生します。......、connect で www.ruby-lang.org:80 に接続するには以下のようにします。
例:
require 'socket'
s = Socket.new(Socket::AF_INET, Socket::SOCK_STREAM, 0)
sockaddr = Socket.sockaddr_in(80, "www.ruby-lang.org")
s.connect(sockaddr)
s.write "GET / HTTP/1.0\r\n\r\n"
print s.rea... -
Socket
# connect _ nonblock(server _ sockaddr) -> 0 (325.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) がエラーを報告... -
IPSocket
# recvfrom(maxlen , flags = 0) -> Array (109.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... -
BasicSocket
. do _ not _ reverse _ lookup=(bool) (79.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] (61.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...