public async Task IsAvailble_NotNat() { var nat = new Client(IPAddress.Parse("127.0.0.1")); var q = await nat.IsAvailableAsync(); Assert.IsFalse(q); }
public async Task Unresponsive_Nat() { using (var server = new MockNat()) { var nat = new Client(server.Address) { MaxRetries = 1 }; var q = await nat.IsAvailableAsync(); Assert.IsFalse(q); } }
public async Task IsAvailable() { var response = new Response().ToByteArray(); using (var server = new MockNat()) { server.RequestReceived += (s, req) => server.udp.Send(response, response.Length, req.RemoteEndPoint); var nat = new Client(server.Address); var q = await nat.IsAvailableAsync(); Assert.IsTrue(q); } }
/// <summary> /// Gets the NATs. /// </summary> /// <returns> /// A sequence of NAT clients that can be talked to, /// </returns> /// <remarks> /// Asks each <see cref="GetGateways">gateways</see> if it supports /// PCP or PMP. If true, then a <see cref="NatClient"/> is retuned. /// </remarks> public static IEnumerable <NatClient> GetNats() { foreach (var gateway in GetGateways()) { NatClient nat = new Pcp.Client(gateway); if (nat.IsAvailableAsync().Result) { yield return(nat); continue; } nat = new Pmp.Client(gateway); if (nat.IsAvailableAsync().Result) { yield return(nat); continue; } } }