種類
- インスタンスメソッド (6)
- 特異メソッド (2)
- 定数 (2)
クラス
- BasicSocket (4)
- Socket (4)
- UDPSocket (1)
モジュール
キーワード
-
IP
_ SENDSRCADDR (2) -
connect
_ nonblock (1) - recvmsg (1)
- send (2)
- sendmsg (1)
-
sendmsg
_ nonblock (1) -
tcp
_ server _ loop (2)
検索結果
先頭5件
- Socket
:: Constants :: IP _ SENDSRCADDR -> Integer - Socket
:: IP _ SENDSRCADDR -> Integer - BasicSocket
# send(mesg , flags , dest _ sockaddr = nil) -> Integer - BasicSocket
# sendmsg(mesg , flags=0 , dest _ sockaddr=nil , *controls) -> Integer - BasicSocket
# sendmsg _ nonblock(mesg , flags=0 , dest _ sockaddr=nil , *controls) -> Integer
-
Socket
:: Constants :: IP _ SENDSRCADDR -> Integer (36607.0) -
ource address for outgoing UDP datagrams。 BasicSocket#getsockopt, BasicSocket#setsockopt の第2引数(optname)に使用します。
...ource address for outgoing UDP datagrams。
BasicSocket#getsockopt, BasicSocket#setsockopt
の第2引数(optname)に使用します。
@see Socket::Constants::IPPROTO_IP, ip(4freebsd)... -
Socket
:: IP _ SENDSRCADDR -> Integer (36607.0) -
ource address for outgoing UDP datagrams。 BasicSocket#getsockopt, BasicSocket#setsockopt の第2引数(optname)に使用します。
...ource address for outgoing UDP datagrams。
BasicSocket#getsockopt, BasicSocket#setsockopt
の第2引数(optname)に使用します。
@see Socket::Constants::IPPROTO_IP, ip(4freebsd)... -
BasicSocket
# send(mesg , flags , dest _ sockaddr = nil) -> Integer (18607.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 (18607.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_* という定数の... -
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#... -
UDPSocket
# send(mesg , flags , sockaddr _ to) -> Integer (18607.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 と同じです... -
Socket
# connect _ nonblock(server _ sockaddr) -> 0 (343.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
. tcp _ server _ loop(host , port) {|sock , addr| . . . } -> () (343.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| . . . } -> () (343.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(maxmesglen=nil , flags=0 , maxcontrollen=nil , opts={}) -> [String , Addrinfo , Integer , *Socket :: AncillaryData] (325.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 の場合には送り元の...