Ruby-сокет не возвращает данные при втором чтении

В моем доме есть asic-компьютер, который я не могу контролировать, но я могу общаться с его API через TCP (CGminer OS). Я пытаюсь записать данные из него:

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

Первая итерация этого цикла возвращает данные, как и ожидалось, вторая - пустая строка. Я совершенно не разбираюсь в сокетах и ​​не уверен, что мне нужно делать. Я знаю, что могу открывать сокет каждую итерацию, если мне нужно, я просто надеюсь, что мне не нужно.

1 ответ

Решение состоит в том, чтобы просто снова открыть сокет.

loop do
  socket = TCPSocket.open(address, port)
  response = socket.read
  socket.close
end 
Другие вопросы по тегам