るりまサーチ (Ruby 3.3)

最速Rubyリファレンスマニュアル検索!
43件ヒット [1-43件を表示] (0.017秒)

別のキーワード

  1. socket udp_server_sockets
  2. socket tcp_server_sockets
  3. socket tcp_server_loop
  4. socket udp_server_loop
  5. socket unix_server_socket

検索結果

Socket.tcp_server_sockets(host, port) -> [Socket] (18409.0)

TCP/IP で host:port で待ち受けるサーバ側のソケットを 作成します。

...番号を持ちます。

require 'socket'

# tcp_server_sockets returns は2つのソケットを返す
socket
s = Socket.tcp_server_sockets(1296)
p sockets #=> [#<Socket:fd 3>, #<Socket:fd 4>]

# それぞれは IPv4 と IPv6 のソケット
socket
s.each {|s| p s.local_address }
#=>...
...
socket
s = Socket.tcp_server_sockets(0)
socket
s.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 (18409.0)

TCP/IP で host:port で待ち受けるサーバ側のソケットを 作成します。

...番号を持ちます。

require 'socket'

# tcp_server_sockets returns は2つのソケットを返す
socket
s = Socket.tcp_server_sockets(1296)
p sockets #=> [#<Socket:fd 3>, #<Socket:fd 4>]

# それぞれは IPv4 と IPv6 のソケット
socket
s.each {|s| p s.local_address }
#=>...
...
socket
s = Socket.tcp_server_sockets(0)
socket
s.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] (18409.0)

TCP/IP で host:port で待ち受けるサーバ側のソケットを 作成します。

...番号を持ちます。

require 'socket'

# tcp_server_sockets returns は2つのソケットを返す
socket
s = Socket.tcp_server_sockets(1296)
p sockets #=> [#<Socket:fd 3>, #<Socket:fd 4>]

# それぞれは IPv4 と IPv6 のソケット
socket
s.each {|s| p s.local_address }
#=>...
...
socket
s = Socket.tcp_server_sockets(0)
socket
s.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 (18409.0)

TCP/IP で host:port で待ち受けるサーバ側のソケットを 作成します。

...番号を持ちます。

require 'socket'

# tcp_server_sockets returns は2つのソケットを返す
socket
s = Socket.tcp_server_sockets(1296)
p sockets #=> [#<Socket:fd 3>, #<Socket:fd 4>]

# それぞれは IPv4 と IPv6 のソケット
socket
s.each {|s| p s.local_address }
#=>...
...
socket
s = Socket.tcp_server_sockets(0)
socket
s.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_loop(host, port) {|sock,addr| ...} -> () (18385.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| ...} -> () (18385.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.udp_server_sockets(host, port) -> [Sockets] (18373.0)

UDP で host:port を待ち受けるサーバ側のソケットを作成します。

...はすべて同じ番号を持ちます。

# UDP/IP echo server
require 'socket'

Socket
.udp_server_sockets(0) {|sockets|
p sockets.first.local_address.ip_port #=> 32963
Socket
.udp_server_loop_on(sockets) {|msg, msg_src|
msg_src.reply msg
}
}

@param host 割り当て...

Socket.udp_server_sockets(host, port) {|sockets| ... } -> object (18373.0)

UDP で host:port を待ち受けるサーバ側のソケットを作成します。

...はすべて同じ番号を持ちます。

# UDP/IP echo server
require 'socket'

Socket
.udp_server_sockets(0) {|sockets|
p sockets.first.local_address.ip_port #=> 32963
Socket
.udp_server_loop_on(sockets) {|msg, msg_src|
msg_src.reply msg
}
}

@param host 割り当て...

Socket.udp_server_sockets(port) -> [Sockets] (18373.0)

UDP で host:port を待ち受けるサーバ側のソケットを作成します。

...はすべて同じ番号を持ちます。

# UDP/IP echo server
require 'socket'

Socket
.udp_server_sockets(0) {|sockets|
p sockets.first.local_address.ip_port #=> 32963
Socket
.udp_server_loop_on(sockets) {|msg, msg_src|
msg_src.reply msg
}
}

@param host 割り当て...

Socket.udp_server_sockets(port) {|sockets| ... } -> object (18373.0)

UDP で host:port を待ち受けるサーバ側のソケットを作成します。

...はすべて同じ番号を持ちます。

# UDP/IP echo server
require 'socket'

Socket
.udp_server_sockets(0) {|sockets|
p sockets.first.local_address.ip_port #=> 32963
Socket
.udp_server_loop_on(sockets) {|msg, msg_src|
msg_src.reply msg
}
}

@param host 割り当て...

絞り込み条件を変える

Socket.udp_server_loop_on(sockets) {|msg, msg_src| ... } -> () (18364.0)

sockets (UDP のソケット)に対し、通信を待ち受けます。

...
socket
s (UDP のソケット)に対し、通信を待ち受けます。

Socket
.udp_server_sockets の返り値がこれの引数に適切です。

ソケットからメッセージを受け取るたびにブロックを呼び出します。
ブロックに渡される引数は msg と msg_src の...
...つで、
msg は受け取ったメッセージ文字列で、 msg_src は
通信相手の Socket::UDPSource オブジェクトです。

無限ループ構造になっています。

@param sockets 通信を待ち受けるソケットの配列
@see Socket.udp_server_recv, Socket.udp_server_loop...

Socket.udp_server_recv(sockets) {|msg, msg_src| ... } -> () (18364.0)

socketsで与えられた各 UDP ソケットからデータを読み取ります。

...socketsで与えられた各 UDP ソケットからデータを読み取ります。

各ソケットからメッセージを読み取るごとにブロックを呼び出します。
ブロックに渡される引数は msg と msg_src の 2 つで、
msg は受け取ったメッセージ文字列...
...通信相手の Socket::UDPSource オブジェクトです。

Socket
.udp_server_loop はこのメソッドの用いて以下のようにして
実装できます。

require 'socket'

udp_server_sockets(host, port) {|sockets|
loop {
readable, _, _ = IO.select(sockets)
udp_serv...
...er_recv(readable) {|msg, msg_src| ... }
}
}

@param sockets 読み込むソケットの配列...

Socket.udp_server_loop(host, port) {|msg, msg_src| ... } -> () (18349.0)

UDP のサーバを起動して、メッセージが来るごとに ブロックを呼び出します。

...と msg_src の 2 つで、
msg は受け取ったメッセージ文字列で、 msg_src は
通信相手の Socket::UDPSource オブジェクトです。

@param host 割り当てるホスト名
@param port 割り当てるポート番号
@see Socket.udp_server_sockets, Socket.udp_server_loop_on...

Socket.udp_server_loop(port) {|msg, msg_src| ... } -> () (18349.0)

UDP のサーバを起動して、メッセージが来るごとに ブロックを呼び出します。

...と msg_src の 2 つで、
msg は受け取ったメッセージ文字列で、 msg_src は
通信相手の Socket::UDPSource オブジェクトです。

@param host 割り当てるホスト名
@param port 割り当てるポート番号
@see Socket.udp_server_sockets, Socket.udp_server_loop_on...

Socket.unix_server_socket(path) -> Socket (18349.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 (18349.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_loop(path) {|socket, client_addrinfo| ... } -> () (18310.0)

Unix サーバソケットを生成し、 新しい接続を受け入れるごとにブロックを呼び出します。

...全です。
つまり、 /tmp/malicious-users-directory/socket という名前のパスは
使うべきではありません。
/tmp にスティッキービットが立っている場合、/tmp/socket
/tmp/your-private-directory/socket というパス名は安全と考えて良いでしょう...

TCPServer (18043.0)

TCP/IP ストリーム型接続のサーバ側のソケットのクラスです。

...ットを利用したサーバのプログラミングができます。

例えば echo サーバは以下のようになります。

require "socket"

gs = TCPServer.open(0)
socks = [gs]
addr = gs.addr
addr.shift
printf("server is on %s\n", addr.join(":"))

while true
nsock...
...e
str = s.gets
s.write(str)
end
end
end
end

Thread を使えばもっと短くなります。

require "socket"

gs = TCPServer.open(0)
addr = gs.addr
addr.shift
printf("server is on %s\n", addr.join(":"))

while true
Thread.start(gs.accep...

UNIXServer (18007.0)

UNIXストリーム型接続のサーバ側のソケットのクラス。

UNIXストリーム型接続のサーバ側のソケットのクラス。

TCPServer.new(host=nil, service) -> TCPServer (9307.0)

新しいサーバー接続をオープンします。service は /etc/services (または NIS) に登録されているサービ ス名かポート番号で指定します。host を指定した時は 指定したホストに対しての接続だけを受け付けます。

...、接続を特定できます。

host に指定できる形式はlib:socket#host_formatを見てください。

@param host 接続したいホストを指定します。
host に指定できる形式はlib:socket#host_formatを見てください。

@param service /etc/services (ま...

絞り込み条件を変える

TCPServer.open(host=nil, service) -> TCPServer (9307.0)

新しいサーバー接続をオープンします。service は /etc/services (または NIS) に登録されているサービ ス名かポート番号で指定します。host を指定した時は 指定したホストに対しての接続だけを受け付けます。

...、接続を特定できます。

host に指定できる形式はlib:socket#host_formatを見てください。

@param host 接続したいホストを指定します。
host に指定できる形式はlib:socket#host_formatを見てください。

@param service /etc/services (ま...

UNIXServer.new(path) -> UNIXServer (9307.0)

path で指定したパス名を用いて接続を受け付けるソケット を作成します。

...クを呼びだし、
ブロック終了時にソケットを閉じます。この場合には
ブロックの評価値を返り値として返します。

@param path 接続を受け付けるパス名文字列

require 'socket'

serv = UNIXServer.new("/tmp/sock")
s = serv.accept
p s.read...

UNIXServer.open(path) -> UNIXServer (9307.0)

path で指定したパス名を用いて接続を受け付けるソケット を作成します。

...クを呼びだし、
ブロック終了時にソケットを閉じます。この場合には
ブロックの評価値を返り値として返します。

@param path 接続を受け付けるパス名文字列

require 'socket'

serv = UNIXServer.new("/tmp/sock")
s = serv.accept
p s.read...

UNIXServer#accept -> UnixSocket (9043.0)

クライアントからの接続要求を accept(2)で待ち受け、接続した UNIXSocket のインスタンスを返します。

...ライアントからの接続要求を accept(2)で待ち受け、接続した
UNIXSocket のインスタンスを返します。

例:

require 'socket'

UNIXServer.open("/tmp/s") {|serv|
c = UNIXSocket.open("/tmp/s")
s = serv.accept
s.write "from server"
c.write "from client"...

TCPServer#accept -> TCPSocket (9007.0)

クライアントからの接続要求を受け付け、接続した TCPSocket のインスタンスを返します。

...クライアントからの接続要求を受け付け、接続した
TCPSocket のインスタンスを返します。

例:

require 'socket'

TCPServer.open("", 0) {|serv|
c = TCPSocket.new(*serv.addr.values_at(3,1))
s = serv.accept
c.write "foo"
p s.recv(10) #=> "foo"
}...

絞り込み条件を変える

TCPServer#accept_nonblock -> TCPSocket (9007.0)

ソケットをノンブロッキングモードに設定した後、 accept(2) を呼び出します。

ソケットをノンブロッキングモードに設定した後、
accept(2) を呼び出します。

返り値は TCPServer#accept と同じです。

accept(2) がエラーになった場合、
EAGAIN, EINTR を含め例外 Errno::EXXX が発生します。

@raise Errno::EXXX accept(2) がエラーになった場合に発生します。

TCPServer#listen(backlog) -> 0 (9007.0)

listen(2) を実行します。 (Socket#listenと同じ)

...listen(2) を実行します。
(Socket#listenと同じ)

backlog は、クライアントからの接続要求を保留できる数です。

listen(2) が成功すれば 0 を返します。
失敗すれば 例外 Errno::EXXX が発生します。

@param backlog backlog は、クライアント...

TCPServer#sysaccept -> Integer (9007.0)

接続したクライアントのソケットをファイル記述子で返すことを除けば TCPServer#accept と同じです。

...接続したクライアントのソケットをファイル記述子で返すことを除けば
TCPServer#accept と同じです。

例:

require 'socket'

TCPServer.open("", 0) {|serv|
c = TCPSocket.new(*serv.addr.values_at(3,1))
p serv.sysaccept #=> 6
}...

UNIXServer#accept_nonblock -> UnixSocket (9007.0)

ソケットをノンブロッキングモードに設定した後、 accept(2) を呼び出します。

...ブロッキングモードに設定した後、
accept(2) を呼び出します。

接続した
UNIXSocket のインスタンスを返します。

accept(2) がエラーになった場合、Socket#accept と同じ例外が
発生します。

Errno::EWOULDBLOCK, Errno::EAGAIN,
Errno::ECONNABORTE...
...を掴まえることができます。

require 'socket'
serv = UNIXServer.new("/tmp/sock")
begin # emulate blocking accept
sock = serv.accept_nonblock
rescue IO::WaitReadable, Errno::EINTR
IO.select([serv])
retry
end
# sock is an accepted socket.

@see UNIXServer#accept...

UNIXServer#listen(backlog) -> 0 (9007.0)

listen(2) を実行します。 (Socket#listenと同じ)

...listen(2) を実行します。
(Socket#listenと同じ)

backlog は、クライアントからの接続要求を保留できる数です。

listen(2) が成功すれば 0 を返します。
失敗すれば 例外 Errno::EXXX が発生します。

@param backlog バックログの最大数(接...

絞り込み条件を変える

UNIXServer#sysaccept -> Integer (9007.0)

接続したクライアントのソケットをファイル記述子で返すことを除けば UNIXServer#accept と同じです。

...接続したクライアントのソケットをファイル記述子で返すことを除けば
UNIXServer#accept と同じです。

例:

require 'socket'

UNIXServer.open("/tmp/s") {|serv|
c = UNIXSocket.open("/tmp/s")
p serv.sysaccept #=> 6
}...

UNIXServer.new(path) {|sock| ...} -> object (9007.0)

path で指定したパス名を用いて接続を受け付けるソケット を作成します。

...クを呼びだし、
ブロック終了時にソケットを閉じます。この場合には
ブロックの評価値を返り値として返します。

@param path 接続を受け付けるパス名文字列

require 'socket'

serv = UNIXServer.new("/tmp/sock")
s = serv.accept
p s.read...

UNIXServer.open(path) {|sock| ...} -> object (9007.0)

path で指定したパス名を用いて接続を受け付けるソケット を作成します。

...クを呼びだし、
ブロック終了時にソケットを閉じます。この場合には
ブロックの評価値を返り値として返します。

@param path 接続を受け付けるパス名文字列

require 'socket'

serv = UNIXServer.new("/tmp/sock")
s = serv.accept
p s.read...

Socket#connect(server_sockaddr) -> 0 (346.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 (328.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 (79.0)

汎用ソケットクラス。

...して
Socket
.new がありますが、以下のようなより便利な
メソッドがあります。
* TCP のクライアントソケット Socket.tcp TCPSocket.open
* TCP のサーバソケット Socket.tcp_server_loop,
Socket
.tcp_server_sockets, TCPServer.open
* UNIX socket のクラ...
...イアントソケット Socket.unix UNIXSocket.open
* UNIX socket のサーバソケット Socket.unix_server_loop,
Socket
.unix_server_socket, UNIXServer.open
また、クライアントソケットは Addrinfo#connect で、
サーバソケットを Addrinfo#bind や Addrinfo#listen で
...

Socket.accept_loop(sockets) {|sock, client_addrinfo| ...} -> () (61.0)

sockets でサーバソケットを受け取り、接続を待ち受け、 クライアントとの接続が確立するたびにブロックにその接続 ソケットを渡し呼び出します。

...sockets でサーバソケットを受け取り、接続を待ち受け、
クライアントとの接続が確立するたびにブロックにその接続
ソケットを渡し呼び出します。

ブロックの引数はクライアントと接続したソケットオブジェクトと
Addrinfo...
...

Socket
.tcp_server_loop と同様、ブロックは
逐次的に呼び出されます。つまりブロックか終了するまで
次の接続は accept されません。
並列に通信したい場合は
スレッドのような並列実行機構を使う必要があります。

@param sockets...
...待ち受けたいサーバソケットの配列

@see Socket.tcp_server_loop, Socket.unix_server_loop...

Socket::AI_NUMERICSERV -> Integer (55.0)

Prevent server name resolution。

...Prevent server name resolution。

Socket
.getaddrinfo, Addrinfo.getaddrinfo の引数 flags に渡す
定数です。

@see getaddrinfo(3)...

Socket::Constants::AI_NUMERICSERV -> Integer (55.0)

Prevent server name resolution。

...Prevent server name resolution。

Socket
.getaddrinfo, Addrinfo.getaddrinfo の引数 flags に渡す
定数です。

@see getaddrinfo(3)...

Socket::UDPSource (55.0)

Socket.udp_server_loop で使われるアドレス情報を保持するクラスです。

...Socket.udp_server_loop で使われるアドレス情報を保持するクラスです。...

絞り込み条件を変える

BasicSocket#getpeereid -> [Integer, Integer] (25.0)

Unix ドメインソケットにおいて接続相手の euid と egid を 返します。

..., 2番目の要素が egid です。

ソケットが Unix ドメインソケットでない場合の返り値は
不定です。

require 'socket'

Socket
.unix_server_loop("/tmp/sock") {|s|
begin
euid, egid = s.getpeereid

# Check the connected client is myself or not....

BasicSocket#getsockopt(level, optname) -> Socket::Option (25.0)

ソケットのオプションを取得します。getsockopt(2) を参照してください。 取得したオプションのデータを Socket::Option で返します。

...ください。
取得したオプションのデータを Socket::Option で返します。

level, optname には Socket::SOL_SOCKET Socket::SO_REUSEADDR
といった整数値の他、文字列("SOL_SOCKET", prefixなしの "SOCKET")や
シンボル(:SO_REUSEADDR, :REUSEADDR)を用いるこ...
...@see BasicSocket#setsockopt

例:

require 'socket'

serv = Socket.tcp_server_sockets("", 0)[0]
c = serv.local_address.connect
s = serv.accept
opt = c.getsockopt(Socket::IPPROTO_TCP, Socket::TCP_NODELAY)
# c.getsockopt("TCP", "NODELAY"), なども可能
p opt #=> #<Socket::Option: I...
...NET TCP NODELAY 0>
p opt.bool #=> false (Nagle アルゴリズム有効)
p opt.unpack("i")[0] #=> 0 (Socket::Option#unpack が互換性のために存在する)
# 整数値の場合は Socket::Option#int を用いる
p c.getsockopt(:IP, :TTL).int #=> 64...

Socket::UDPSource.new(remote_addr, local_addr) {|msg| ... } -> Socket::UDPSource (25.0)

Socket::UDPSource オブジェクトを生成します。

...
Socket
::UDPSource オブジェクトを生成します。

このメソッドはユーザは直接使いません。Socket.udp_server_loop が
内部で用います。

@param remote_addr リモートのアドレス(Addrinfo オブジェクト)
@param local_addr ローカルのアドレス(Addrinfo...