Program.cs 983 B

12345678910111213141516171819202122232425262728293031323334
  1. using Dns.Net.Clients;
  2. using STUN;
  3. using STUN.Client;
  4. using System;
  5. using System.Net;
  6. //stun.qq.com:3478 0.0.0.0:0
  7. var server = @"stun.syncthing.net";
  8. ushort port = 3478;
  9. var local = new IPEndPoint(IPAddress.Any, 0);
  10. if (args.Length > 0 && StunServer.TryParse(args[0], out var stun))
  11. {
  12. server = stun.Hostname;
  13. port = stun.Port;
  14. }
  15. if (args.Length > 1)
  16. {
  17. IPEndPoint.TryParse(args[2], out local);
  18. }
  19. var dnsClient = new DefaultDnsClient();
  20. var ip = await dnsClient.QueryAsync(server);
  21. using var client = new StunClient5389UDP(ip, port, local);
  22. await client.QueryAsync();
  23. var res = client.Status;
  24. Console.WriteLine($@"Other address is {res.OtherEndPoint}");
  25. Console.WriteLine($@"Binding test: {res.BindingTestResult}");
  26. Console.WriteLine($@"Local address: {res.LocalEndPoint}");
  27. Console.WriteLine($@"Mapped address: {res.PublicEndPoint}");
  28. Console.WriteLine($@"Nat mapping behavior: {res.MappingBehavior}");
  29. Console.WriteLine($@"Nat filtering behavior: {res.FilteringBehavior}");