本文简要介绍ruby语言中 TCPServer.accept_nonblock
的用法。
用法
accept_nonblock([options]) → tcpsocket
在为底层文件说明符设置 O_NONBLOCK 后,使用 accept(2) 接受传入连接。它为传入连接返回一个接受的 TCPSocket
。
示例
require 'socket'
serv = TCPServer.new(2202)
begin # emulate blocking accept
sock = serv.accept_nonblock
rescue IO::WaitReadable, Errno::EINTR
IO.select([serv])
retry
end
# sock is an accepted socket.
如果对 TCPServer#accept_nonblock
的调用失败,请参阅 Socket#accept
以了解可能引发的异常。
TCPServer#accept_nonblock
可能引发与accept(2) 失败相对应的任何错误,包括Errno::EWOULDBLOCK。
如果异常是 Errno::EWOULDBLOCK、Errno::EAGAIN、Errno::ECONNABORTED、Errno::EPROTO,则通过 IO::WaitReadable
对其进行扩展。所以 IO::WaitReadable
可以用来挽救重试accept_nonblock的异常。
通过将关键字参数 exception
指定为 false
,您可以指示 accept_nonblock
不应引发 IO::WaitReadable
异常,而是返回符号 :wait_readable
。
参看
相关用法
- Ruby TCPServer.accept用法及代码示例
- Ruby TCPServer.new用法及代码示例
- Ruby TCPServer.listen用法及代码示例
- Ruby TCPServer.sysaccept用法及代码示例
- Ruby TCPServer类用法及代码示例
- Ruby TCPSocket.gethostbyname用法及代码示例
- Ruby TCPSocket类用法及代码示例
- Ruby Time tv_sec用法及代码示例
- Ruby Time usec用法及代码示例
- Ruby Time yday()用法及代码示例
- Ruby Time succ()用法及代码示例
- Ruby Time mon()用法及代码示例
- Ruby Time.gmtime用法及代码示例
- Ruby Time iso8601用法及代码示例
- Ruby Time.at用法及代码示例
- Ruby Thread.kill用法及代码示例
- Ruby Time.utc_offset用法及代码示例
- Ruby Time.isdst用法及代码示例
- Ruby TracePoint.defined_class用法及代码示例
- Ruby Time.time + numeric用法及代码示例
- Ruby Thread.pending_interrupt?用法及代码示例
- Ruby Time wednesday?用法及代码示例
- Ruby Time.wednesday?用法及代码示例
- Ruby Thread kill()用法及代码示例
- Ruby Time asctime()用法及代码示例
注:本文由纯净天空筛选整理自ruby-lang.org大神的英文原创作品 TCPServer.accept_nonblock。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。