種類
- 定数 (7)
- 特異メソッド (6)
- インスタンスメソッド (3)
ライブラリ
- socket (16)
キーワード
-
EAI
_ ADDRFAMILY (1) -
IFF
_ LIVE _ ADDR _ CHANGE (1) -
INADDR
_ ALLHOSTS _ GROUP (1) -
INADDR
_ LOOPBACK (1) -
INADDR
_ MAX _ LOCAL _ GROUP (1) -
INET6
_ ADDRSTRLEN (1) -
INET
_ ADDRSTRLEN (1) -
accept
_ loop (1) -
connect
_ nonblock (1) - getaddrinfo (1)
-
ip
_ address _ list (1) - recvfrom (1)
-
recvfrom
_ nonblock (1) -
tcp
_ server _ loop (2) -
unix
_ server _ loop (1)
検索結果
先頭5件
-
Socket
. ip _ address _ list -> [Addrinfo] (36904.0) -
ローカルの IP アドレスを配列で返します。
ローカルの IP アドレスを配列で返します。 -
Socket
:: IFF _ LIVE _ ADDR _ CHANGE (36607.0) -
hardware address change when it's running
hardware address change when it's running -
Socket
:: EAI _ ADDRFAMILY -> Integer (36604.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 (36604.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 (36604.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 (36604.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 (36604.0) -
IPv6アドレス文字列の最大長。
IPv6アドレス文字列の最大長。
@see netinet/in.h(header) -
Socket
:: INET _ ADDRSTRLEN -> Integer (36604.0) -
IPv4アドレス文字列の最大長。
IPv4アドレス文字列の最大長。
@see netinet/in.h(header) -
Socket
. tcp _ server _ loop(host , port) {|sock , addr| . . . } -> () (18610.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| . . . } -> () (18610.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
# connect _ nonblock(server _ sockaddr) -> 0 (18604.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] (18604.0) -
ソケットをノンブロッキングモードに設定した後、 recvfrom(2) を呼び出します。
...ソケットをノンブロッキングモードに設定した後、
recvfrom(2) を呼び出します。
引数、返り値は Socket#recvfrom と同じです。
recvfrom(2) がエラーになった場合、
EAGAIN, EINTR を含め例外 Errno::EXXX が発生します。
Errno::EWOULDBLOCK、Er... -
Socket
. accept _ loop(sockets) {|sock , client _ addrinfo| . . . } -> () (18604.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 (18604.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| . . . } -> () (18604.0) -
Unix サーバソケットを生成し、 新しい接続を受け入れるごとにブロックを呼び出します。
...全です。
つまり、 /tmp/malicious-users-directory/socket という名前のパスは
使うべきではありません。
/tmp にスティッキービットが立っている場合、/tmp/socket や
/tmp/your-private-directory/socket というパス名は安全と考えて良いでしょう... -
Socket
# recvfrom(maxlen , flags=0) -> [String , Addrinfo] (604.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"]...