Ruby在recv时检测套接字关闭
Posted
技术标签:
【中文标题】Ruby在recv时检测套接字关闭【英文标题】:Ruby detect socket close while recv 【发布时间】:2012-09-01 16:30:07 【问题描述】:我有一个 ruby 套接字客户端连接到将随时关闭连接的服务器。 这是我的代码:
@conn = TCPSocket.new address[0], address[1]
while xml = @conn.recv(4096)
// do something
end
如何在此处检测套接字关闭?
【问题讨论】:
【参考方案1】:您可能已经为自己回答了这个问题,但为了记录......
recv 方法阻塞,直到至少有一个字节可用,或者套接字关闭。因此,您可以循环直到 recv 返回空字符串:
@conn = TCPSocket.new address[0], address[1]
while true
xml = @conn.recv(4096)
break if xml.empty?
// do something
end
【讨论】:
以上是关于Ruby在recv时检测套接字关闭的主要内容,如果未能解决你的问题,请参考以下文章
如果达到超时,gen_tcp:recv/3 是不是会关闭套接字?