gpt4 book ai didi

Ruby:如何检测套接字的一侧何时关闭

转载 作者:数据小太阳 更新时间:2023-10-29 06:44:37 26 4
gpt4 key购买 nike

如何检测套接字处于半开状态?我正在处理的情况是套接字的另一端发送了一个 FIN,而 Ruby 应用程序已确认该 FIN。有没有办法让我知道套接字处于这种情况?

举个例子:

require 'socket'

s = TCPServer.new('0.0.0.0', 5010)

loop do
c = s.accept

until c.closed?
p c.recv(1024)
end
end

在这种情况下,当我远程登录到端口 5010 时,我会看到所有输入,直到我关闭远程登录 session 。届时,它将尽可能快地一遍又一遍地打印空字符串。

最佳答案

您正在使用阻塞调用 recv,当另一端关闭时它将返回 nil。在您关闭套接字之前,套接字不会关闭。改变

  until c.closed?
p c.recv(1024)
end

while (s = c.recv(1024)) && s > 0
p s
end
c.close

关于Ruby:如何检测套接字的一侧何时关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/807539/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com