Я пытался пару дней с ограниченным успехом использовать TCP для связи двух программ ruby на одном или разных компьютерах.
Я ищу, например, «клиент» и «сервер»'скрипты, которые будут работать сразу, как только я выберу порты, которые работают.
Код клиента, который, как мне кажется, работает, показан ниже.
Но у меня не работает серверс ним.
# Seems to work for some reason
require 'socket'
tcp_client=TCPSocket.new('localhost',1540)
while grab_string=tcp_client.gets
puts(grab_string)
end
tcp_client.close
Меня интересует самое простое из возможных решений, которое работает на моей машине.
Все, что нужно сделать, это отправить строку.Ответ, который я ищу, похож на this , но с ruby вместо python.
Не стесняйтесь изменять код для клиента и сервера, оставив только половину головоломки.Я не уверен, работает ли он или нет.
Код сервера
# Server
require 'socket'
sock = TCPSocket.new('localhost', 1540)
sock.write 'GETHELLO'
puts sock.read(5) # Since the response message has 5 bytes.
sock.close
Используя код, предложенный kennycoc, я получаю следующее сообщение об ошибке
Server.rb:3:in `initialize': Only one usage of each socket address (protocol/network address/port) is normally permitted. - bind(2) for nil port 1540 (Errno::EADDRINUSE)
from Server.rb:3:in `new'
from Server.rb:3:in `<main>'