52 lines
1.2 KiB
Crystal
52 lines
1.2 KiB
Crystal
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
|