Mar*_*lly 4 ruby tcpsocket tcpserver
也许我已经把我的套接字编程方式混淆了,但不应该像这样的工作吗?
srv = TCPServer.open(3333)
client = srv.accept
data = ""
while (tmp = client.recv(10))
data += tmp
end
Run Code Online (Sandbox Code Playgroud)
我几乎尝试了从客户端TCPSocket"获取"数据的所有其他方法,但所有这些方法都挂起并且永远不会突破循环(getc,get,read等).我觉得我忘记了什么.我错过了什么?
为了使服务器写得很好,您需要:
read(size)而不是recv(size).read阻塞,直到收到总字节数.recv直到你收到一个字节序列,表明通信结束.read将返回部分数据或0,recv并返回0大小的数据data.empty?==true.select,以便在一段时间后没有进行通信时获得超时.在这种情况下,您将关闭套接字并假设每个数据都已通信.希望这可以帮助.
| 归档时间: |
|
| 查看次数: |
7132 次 |
| 最近记录: |