【发布时间】:2011-10-26 06:58:47
【问题描述】:
TCP 套接字是流,而不是消息,因此某些系统上的 berkeley 套接字send() 函数可能发送的数据少于所需的数据。由于 Ruby Socket 是对 berkeley 套接字的非常薄的包装,AFAIK Socket#send 的行为与 berkeley 套接字 send() 完全相同。那么通过 Ruby TCP 套接字发送完整消息的正确方法是什么?在 python 中,它是一个名为sendall() 的特殊函数。但在 Ruby 中,我需要手动编写这样的代码:
while (sent = sock.send( data, 0 ) < data.length do
data = data[ sent..-1 ]
end
【问题讨论】: