当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。