Skip to content

Instantly share code, notes, and snippets.

@gabebw
Last active August 29, 2015 14:10
Show Gist options
  • Save gabebw/94a14114bd2e606b55b4 to your computer and use it in GitHub Desktop.
Save gabebw/94a14114bd2e606b55b4 to your computer and use it in GitHub Desktop.
require 'socket'
# Use your INTERNAL ip
me = { ip: '192.168.1.205', port: 55_555, name: 'Gabe' }
# Use your friend's EXTERNAL ip
friend = { ip: '50.187.42.170', port: 5_555, name: 'Edward' }
BasicSocket.do_not_reverse_lookup = true
sender = UDPSocket.new
sender.setsockopt(Socket::SOL_SOCKET, Socket::SO_BROADCAST, true)
receiver = UDPSocket.new
receiver.bind(me[:ip], me[:port])
receiver.setsockopt(Socket::SOL_SOCKET, Socket::SO_BROADCAST, true)
send_thread = Thread.new(me, friend, sender) do |me, friend, sender|
loop do
puts "Inside send_thread"
print "> "
data = $stdin.gets.chomp
send_message(data, me, friend, sender)
break if data == '/quit'
Thread.pass
end
end
receive_thread = Thread.new do
loop do
puts "Inside receive_thread"
data, _ = receiver.recvfrom(1024)
$stdout.print("#{friend[:name]}: #{data}\n")
break if data == '/quit'
Thread.pass
end
end
def send_message(message, me, friend, sender)
$stdout.print "\rFrom you: #{me[:name]}: #{message}\n"
sender.send(message, 0, friend[:ip], friend[:port])
end
receive_thread.join
send_thread.join
sender.close
receiver.close
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment