Unsupported library that attempts to punch holes through NAT
Du kannst nicht mehr als 25 Themen auswählen Themen müssen mit entweder einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

SimpleDemo.java 3.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. /*
  2. * To change this template, choose Tools | Templates
  3. * and open the template in the editor.
  4. */
  5. package com.md87.nat.test;
  6. import com.md87.nat.CommsAgent;
  7. import com.md87.nat.NatTraverser;
  8. import com.md87.nat.NatType;
  9. import de.javawi.jstun.attribute.MessageAttributeParsingException;
  10. import de.javawi.jstun.header.MessageHeaderParsingException;
  11. import de.javawi.jstun.util.UtilityException;
  12. import java.io.Console;
  13. import java.io.IOException;
  14. import java.net.DatagramPacket;
  15. import java.net.DatagramSocket;
  16. import java.net.InetAddress;
  17. import java.net.SocketException;
  18. import java.net.UnknownHostException;
  19. /**
  20. *
  21. * @author chris
  22. */
  23. public class SimpleDemo implements CommsAgent {
  24. static final Console console = System.console();
  25. public void sendNATType(NatType type) {
  26. console.printf("Nat type: %s\n", type.name());
  27. }
  28. public NatType readNATType() {
  29. console.printf("Enter NAT type: ");
  30. return NatType.valueOf(console.readLine().trim());
  31. }
  32. public void sendAddress(InetAddress address) {
  33. console.printf("Address: %s\n", address.getHostAddress());
  34. }
  35. public void sendPort(int port) {
  36. console.printf("Port: %s\n", port);
  37. }
  38. public InetAddress readAddress() {
  39. console.printf("Enter address: ");
  40. try {
  41. return InetAddress.getByName(console.readLine().trim());
  42. } catch (UnknownHostException ex) {
  43. return null;
  44. }
  45. }
  46. public int readPort() {
  47. console.printf("Enter port: ");
  48. return Integer.parseInt(console.readLine().trim());
  49. }
  50. public static void main(final String ... args) throws
  51. UnsupportedOperationException, IOException, SocketException,
  52. UtilityException, MessageHeaderParsingException,
  53. MessageAttributeParsingException, InterruptedException {
  54. final NatTraverser traverser = new NatTraverser(new SimpleDemo());
  55. traverser.findBestInetAddress();
  56. final DatagramSocket sock = traverser.traverse();
  57. System.out.println("Traversal complete. Say hello!");
  58. new Thread(new Runnable() {
  59. public void run() {
  60. while (true) {
  61. DatagramPacket p = new DatagramPacket(new byte[255], 255);
  62. try {
  63. sock.receive(p);
  64. System.out.printf("<< %s\n", new String(p.getData()));
  65. } catch (IOException ex) {
  66. ex.printStackTrace();
  67. }
  68. }
  69. }
  70. }).start();
  71. new Thread(new Runnable() {
  72. public void run() {
  73. while (true) {try {
  74. DatagramPacket p = new DatagramPacket(new byte[255], 255);
  75. p.setData((console.readLine() + "\n").getBytes());
  76. sock.send(p);
  77. System.out.printf(">> %s\n", new String(p.getData()));
  78. } catch (IOException ex) {
  79. ex.printStackTrace();
  80. }}
  81. }
  82. }).start();
  83. }
  84. }