當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Ruby BasicSocket.sendmsg用法及代碼示例


本文簡要介紹ruby語言中 BasicSocket.sendmsg 的用法。

用法

sendmsg(mesg, flags=0, dest_sockaddr=nil, *controls) → numbytes_sent

sendmsg 使用 sendmsg(2) 係統調用以阻塞方式發送消息。

mesg 是要發送的字符串。

flags 是 MSG_* 常量的按位或,例如 Socket::MSG_OOB。

dest_sockaddr 是connection-less 套接字的目標套接字地址。它應該是一個 sockaddr,例如 Socket.sockaddr_in 的結果。也可以使用 Addrinfo 對象。

controls 是輔助數據列表。 controls 的元素應該是 Socket::AncillaryData 或三元素數組。 3 元素數組應包含cmsg_level、cmsg_type 和數據。

返回值 numbytes_sent 是一個整數,它是發送的字節數。

sendmsg 可用於實現send_io,如下所示:

# use Socket::AncillaryData.
ancdata = Socket::AncillaryData.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)

相關用法


注:本文由純淨天空篩選整理自ruby-lang.org大神的英文原創作品 BasicSocket.sendmsg。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。