added -v flag to UDPMirror so we can optionally see what's being forwarded on the console

This commit is contained in:
Axel Uhl committed 2011-06-12 14:57:47 +02:00
1 parent 93395921b0
commit adf935acc1
1 file changed
+18 -6
@@ -22,19 +22,30 @@ public class UDPMirror {
if (args.length == 0) {
usage();
} else {
int listeningOnPort = Integer.valueOf(args[0]);
int c = 0;
boolean verbose = false;
if (args[c].equals("-v")) {
c++;
verbose = true;
}
int listeningOnPort = Integer.valueOf(args[c++]);
byte[] buf = new byte[65536];
DatagramSocket udpSocket = new DatagramSocket(listeningOnPort);
DatagramPacket received = new DatagramPacket(buf, buf.length);
DatagramSocket[] sendingSockets = new DatagramSocket[(args.length - 1) / 2];
DatagramPacket[] mirroredPackets = new DatagramPacket[(args.length - 1) / 2];
for (int i = 1; i < args.length - 1; i += 2) {
sendingSockets[(i - 1) / 2] = new DatagramSocket();
mirroredPackets[(i - 1) / 2] = new DatagramPacket(buf, buf.length, InetAddress.getByName(args[i]),
Integer.valueOf(args[i + 1]));
while (c < args.length - 1) {
sendingSockets[(c - 1) / 2] = new DatagramSocket();
mirroredPackets[(c - 1) / 2] = new DatagramPacket(buf, buf.length, InetAddress.getByName(args[c]),
Integer.valueOf(args[c + 1]));
c += 2;
}
while (true) {
udpSocket.receive(received);
if (verbose) {
String packetAsString = new String(received.getData(), received.getOffset(), received.getLength()).trim();
System.out.println(packetAsString);
}
for (int i = 0; i < mirroredPackets.length; i++) {
mirroredPackets[i].setLength(received.getLength());
sendingSockets[i].send(mirroredPackets[i]);
@@ -44,6 +55,7 @@ public class UDPMirror {
}
private static void usage() {
System.out.println("Usage: java "+UDPMirror.class.getName()+" <listeningport> hostname1 port1 [hostname2 port2]*");
System.out.println("Usage: java "+UDPMirror.class.getName()+" [-v] <listeningport> hostname1 port1 [hostname2 port2]*");
System.out.println(" -v\tPrint packets received to stdout");
}
}