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