mirror of
https://thingvellir.net/git/overte
synced 2025-03-27 23:52:03 +01:00
added 20msec delay in reply of buffered data
This commit is contained in:
parent
8033440932
commit
168d366120
1 changed files with 41 additions and 14 deletions
55
socket.rb
55
socket.rb
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue