require "ipc" require "option_parser" service_name = "tcp" port_to_listen = 1234 hostname = "localhost" requested_service_name = "pong" OptionParser.parse do |parser| parser.on "-p port", "--port port", "Port to listen on." do |port| port_to_listen = port.to_u16 end parser.on "-h hostname", "--host-name hostname", "Hostname." do |name| hostname = name end parser.on "-s service-name", "--service-name service-name", "Service name." do |name| service_name = name end parser.on "-r requested-service-name", "--requested-service-name requested-service-name", "Requested service name." do |name| requested_service_name = name end parser.on "-h", "--help", "Show this help" do puts parser exit 0 end end service = IPC::Client.new service_name # 1. send service name service.send 1.to_u8, "tcp://#{hostname}:#{port_to_listen}/#{requested_service_name}" # 2. receive "OK" message = service.read puts "message read: #{String.new message.payload}" # 3. sending a message to the pong service puts "sending 'coucou' to the pong service" service.send 2.to_u8, "coucou" # 4. receiving a response message = service.read puts "message read: #{String.new message.payload}" service.close