Skip to content

Instantly share code, notes, and snippets.

@brandon15811
Created December 15, 2012 05:34
Show Gist options
  • Save brandon15811/4291537 to your computer and use it in GitHub Desktop.
Save brandon15811/4291537 to your computer and use it in GitHub Desktop.
var dgram = require('dgram')
var client = dgram.createSocket("udp4");
var serverip = process.argv[2];
var serverPort = 19132;
client.bind(19132);
client.on("message", function (msg, rinfo)
{
console.log("Received packet " + msg + " from " + rinfo.ip);
});
client.on("listening", function()
{
setInterval(function(){
var d=new Date();
var t=d.getTime();
client.send(t, 0, t.length, serverPort, serverip);
console.log("Sent packet " + t + " to " + serverip)
},1000);
})
# From
# http://www.rubyinside.com/skype-style-firewall-busting-with-ruby-and-udp-399.html
require 'socket'
remote_host = ARGV.first
# Punches hole in firewall
punch = UDPSocket.new
punch.bind('', 6311)
punch.send('', 0, remote_host, 6311)
punch.close
# Bind for receiving
udp_in = UDPSocket.new
udp_in.bind('0.0.0.0', 6311)
puts "Binding to local port 6311"
loop do
# Receive data or time out after 5 seconds
if IO.select([udp_in], nil, nil, rand(4))
data = udp_in.recvfrom(1024)
remote_port = data[1][1]
remote_addr = data[1][3]
puts "Response from #{remote_addr}:#{remote_port} is #{data[0]}"
else
puts "Sending a little something.."
udp_in.send(Time.now.to_s, 0, remote_host, 6311)
end
end
var dgram = require("dgram");
var server = dgram.createSocket("udp4");
server.on("message", function (msg, rinfo) {
console.log("server got: " + msg + " from " +
rinfo.address + ":" + rinfo.port);
});
server.on("listening", function () {
var address = server.address();
console.log("server listening " +
address.address + ":" + address.port);
});
server.bind(43278);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment