added 20msec delay in reply of buffered data

This commit is contained in:
Stephen Birarda 2013-01-09 17:00:58 -07:00
parent 8033440932
commit 168d366120

View file

@ -1,23 +1,50 @@
require 'socket'
BUFFER_SLEEP_DURATION_MSECS = 20
begin
# create the UDPSocket object
sock = UDPSocket.new
# bind it to 0.0.0.0 at the given port
port = 55443
sock.bind "0.0.0.0", port
puts "UDP Socket bound to port #{port} and listening."
socket = UDPSocket.new
# while true loop to keep listening for new packets
while true do
data, sender = sock.recvfrom 1024
puts "Recieved #{data.size} bytes from #{sender[3]}"
puts "Echoing data back to #{sender[3]}"
sock.send data, 0, sender[3], sender[1]
end
$dataBuffer = Array.new
$receivers = Hash.new
listenThread = Thread.new(socket) {
# bind it to 0.0.0.0 at the given port
port = 55443
socket.bind "0.0.0.0", port
puts "UDP Socket bound to port #{port} and listening."
# while true loop to keep listening for new packets
while true do
data, sender = socket.recvfrom 1024
puts "Recieved #{data.size} bytes from #{sender[3]}"
$dataBuffer << data
$receivers[sender[3]] = sender[1]
end
}
sendThread = Thread.new(socket) {
while true do
sleep(BUFFER_SLEEP_DURATION_MSECS/1000)
if $dataBuffer.size > 0
$receivers.each do |ip, port|
puts $dataBuffer[0]
puts ip
puts port
socket.send $dataBuffer[0], 0, ip, port
end
$dataBuffer.clear
end
end
}
listenThread.join
sendThread.join
rescue SystemExit, Interrupt => e
puts
puts "Okay, fine. I'll stop listening."
sock.close
socket.close
end