Ruby套接字在第二次读取时不返回数据

Ruby套接字在第二次读取时不返回数据,ruby,sockets,cgminer,Ruby,Sockets,Cgminer,我的房子里有一台asic计算机,我并没有真正的控制权,但我可以通过TCP(CGminer操作系统)与它的API交谈。我正试图从中记录数据: socket = TCPSocket.open(address, port) loop do sleep 1 socket.write(command) response = socket.read end 此循环的第一次迭代按预期返回数据,第二次是空字符串。我对插座一无所知,也不知道我需要做什么。我知道如果有必要的话,我可以在每次迭代

我的房子里有一台asic计算机,我并没有真正的控制权,但我可以通过TCP(CGminer操作系统)与它的API交谈。我正试图从中记录数据:

socket = TCPSocket.open(address, port)
loop do 
  sleep 1   
  socket.write(command)
  response = socket.read
end

此循环的第一次迭代按预期返回数据,第二次是空字符串。我对插座一无所知,也不知道我需要做什么。我知道如果有必要的话,我可以在每次迭代中重新打开套接字,我只是希望我不需要这样做。

解决方案就是重新打开套接字

loop do
  socket = TCPSocket.open(address, port)
  response = socket.read
  socket.close
end 

您希望它在第二次读取时返回什么?Stringified JSON,这是第一次读取返回的内容(它是同一个命令)(
read
在EOF上返回空字符串。你确定另一个端点在发送JSON负载后没有关闭连接吗?你能用
nc
telnet
验证它的协议是什么吗?@Amadan我非常确定它正在关闭连接。JSON sorta意味着RESTful,这意味着套接字不会停留在那里关注即将到来的输入。我每次都会重新打开套接字,但我不确定自己是否理解不愿意这样做的原因。如果这个API有一个规范,那就更好了。那么我们就不需要猜测了。那么API是什么,它的文档在哪里?这是第一个看IMO的地方。否则手动测试就像e Amadan建议应该已经给出足够的线索。但是文档是你首先看到的。这并不能提供问题的答案。要评论或要求作者澄清,请在他们的帖子下方留下评论。-@Seanny123这个答案来自OP,可能是正确的,尽管不是很详细。这也适用于这个任务ion本身,这是IMO的真正问题。我发现这里有很多批评。我的问题是关于套接字连接在多次读取中的行为,我不需要像一些评论所建议的那样使用API(我确实读过,谢谢)我需要帮助理解Socket行为。谢天谢地,阿马丹和MuasasbWa实际上对这一主题发表了评论,所以谢谢你们两位。如果你们觉得我的问题没有达到标准,请随意删除。