require "socket"
port = ARGV[1] || 'echo'
sock = UDPSocket.open
sock.bind('', port)
loop do
msg, (afam, port, host, ip) = sock.recvfrom(1024)
sock.send(msg, 0, ip, port)
end
Server側はClient毎にスレッド化する必要がない
recvfromしたデータにはClientのアドレス情報が入ってる
エコーバックするときにそのアドレス情報を指定する
echo_cln.rb
require "socket"
host = ARGV[0] || 'localhost'
port = ARGV[1] || 'echo'
sock = UDPSocket.open
while msg = STDIN.gets
sock.send(msg, 0, host, port)
print sock.recvfrom(1024)[0]
end
sock.close
Client側はsendするとき自アドレスを一緒に送る
No comments:
Post a Comment