ipcd/src/tcpc.cr

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