本文整理汇总了C#中System.Net.IPAddress.ThrowIfNull方法的典型用法代码示例。如果您正苦于以下问题:C# IPAddress.ThrowIfNull方法的具体用法?C# IPAddress.ThrowIfNull怎么用?C# IPAddress.ThrowIfNull使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.Net.IPAddress
的用法示例。
在下文中一共展示了IPAddress.ThrowIfNull方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: InSameSubnet
/// <summary>
/// Determines whether the IP address is in the same subnet as the
/// specified IP address.
/// </summary>
/// <param name="address">The IPAddress instance this is being called
/// for.</param>
/// <param name="other">The IP address to determine whether it is in the same
/// subnet.</param>
/// <param name="netmask">The subnetmask to apply.</param>
/// <returns>true if both IP address are located in the same subnet; Otherwise
/// false.</returns>
/// <exception cref="ArgumentNullException">The other parameter or the netmask
/// parameter is null.</exception>
/// <exception cref="ArgumentException">The netmask and IP address must be
/// of the same address family.</exception>
/// <remarks>This is an extension method for the IPAddress class.</remarks>
public static bool InSameSubnet(this IPAddress address, IPAddress other,
IPAddress netmask) {
other.ThrowIfNull("other");
netmask.ThrowIfNull("netmask");
return address.And(netmask).Equals(other.And(netmask));
}
示例2: ValidateResponseAsync
public async Task<ValidateResponseResult> ValidateResponseAsync(IPAddress ipAddress, string challenge, string response)
{
ipAddress.ThrowIfNull("ipAddress");
challenge.ThrowIfNull("challenge");
response.ThrowIfNull("response");
if (!_configuration.Enabled)
{
return ValidateResponseResult.ServiceDisabled;
}
var requestMessage =
new HttpRequestMessage(HttpMethod.Post, _configuration.Url)
{
Content = new FormUrlEncodedContent(
new[]
{
new KeyValuePair<string, string>("privatekey", _configuration.PrivateKey),
new KeyValuePair<string, string>("remoteip", ipAddress.ToString()),
new KeyValuePair<string, string>("challenge", challenge),
new KeyValuePair<string, string>("response", response)
})
};
requestMessage.Headers.Add("User-Agent", _configuration.UserAgent);
HttpResponseMessage responseMessage = await HttpClientSingleton.Instance.SendAsync(requestMessage);
string responseContent = await responseMessage.Content.ReadAsStringAsync();
string[] lines = responseContent.Split(new[] { '\n' }, StringSplitOptions.RemoveEmptyEntries);
return lines.Length > 0 && lines[0] == "true" ? ValidateResponseResult.Valid : ValidateResponseResult.Invalid;
}
示例3: And
/// <summary>
/// Bitwise ANDs the IP address with the specified netmask.
/// </summary>
/// <param name="address">The IPAddress instance to AND with the specified
/// netmask.</param>
/// <param name="netmask">The netmask to bitwise AND with the IP
/// address.</param>
/// <returns>The result of the bitwise AND.</returns>
/// <exception cref="ArgumentNullException">The netmask parameter is
/// null.</exception>
/// <exception cref="ArgumentException">The netmask and IP address must be
/// of the same address family.</exception>
/// <remarks>This is an extension method for the IPAddress class.</remarks>
static IPAddress And(this IPAddress address, IPAddress netmask) {
netmask.ThrowIfNull("netmask");
if (address.AddressFamily != netmask.AddressFamily)
throw new ArgumentException("The address family of the specified netmask " +
"is different from the address family of the IP address.");
byte[] buffer = address.GetAddressBytes();
byte[] other = netmask.GetAddressBytes();
for (int i = 0; i < buffer.Length; i++)
buffer[i] = (byte) (buffer[i] & other[i]);
return new IPAddress(buffer);
}
示例4: SocksReply
/// <summary>
/// Initializes a new instance of the SocksReply class.
/// </summary>
/// <param name="status">The status of the response.</param>
/// <param name="address">The server bound IP address.</param>
/// <param name="port">The server bound port.</param>
/// <exception cref="ArgumentNullException">The address parameter
/// is null.</exception>
public SocksReply(ReplyStatus status, IPAddress address, ushort port) {
address.ThrowIfNull("address");
Status = status;
ATyp = address.AddressFamily == AddressFamily.InterNetworkV6 ?
ATyp.IPv6 : ATyp.IPv4;
Address = address;
Port = port;
}
示例5: Socks5Client
/// <summary>
/// Initializes a new instance of the Socks5Client class and connects to the
/// specified port on the specified host.
/// </summary>
/// <param name="address">The IP address of the remote host to which you intend
/// to connect.</param>
/// <param name="port">The port number of the remote host to which you intend
/// to connect.</param>
/// <param name="username">The username with which to authenticate if the
/// server requires authentication.</param>
/// <param name="password">The password with which to authenticate if the
/// server requires authentication.</param>
/// <exception cref="ArgumentNullException">The address parameter is
/// null.</exception>
/// <exception cref="ArgumentOutOfRangeException">The port parameter is not
/// between 0 and 65535.</exception>
/// <exception cref="SocketException">An error occurred when accessing the
/// socket.</exception>
/// <exception cref="Socks5Exception">The server returned invalid data, or
/// authentication with the SOCKS5 server failed.</exception>
public Socks5Client(IPAddress address, int port, string username = null,
string password = null)
{
address.ThrowIfNull("address");
port.ThrowIfOutOfRange("port", 0, 65535);
Username = username;
Password = password;
client = new TcpClient();
client.Connect(address, port);
InitializeConnection();
}
示例6: BindingResponse
/// <summary>
/// Initializes a new instance of the BindingResponse class.
/// </summary>
/// <param name="id">The transaction id of the binding response.</param>
/// <param name="address">The IP address containd in the binding
/// response message.</param>
/// <exception cref="ArgumentNullException">The id parameter or the
/// address parameter is null.</exception>
internal BindingResponse(byte[] id, IPAddress address) {
id.ThrowIfNull("id");
address.ThrowIfNull("address");
Id = id;
Address = address;
}
示例7: Query
/// <summary>
/// Queries the STUN server with the specified IP address for the public IP
/// address of the requesting host.
/// </summary>
/// <param name="address">The IP address of the STUN server to query.</param>
/// <param name="port">The port on which the STUN service is running at
/// the specified host.</param>
/// <param name="timeout">The maximum number of milliseconds to wait for
/// a server response before returning to the caller.</param>
/// <returns>The public IP address of the requesting host.</returns>
/// <exception cref="ArgumentNullException">The address parameter is
/// null.</exception>
/// <exception cref="ArgumentOutOfRangeException">The port is not between
/// 0 and 65535.</exception>
/// <exception cref="ProtocolViolationException">The specified STUN
/// server returned an erroneous response.</exception>
/// <exception cref="SocketException">The specified hostname could not be
/// resolved, or an error occurred while sending the request or while
/// retrieving the response, or the specified STUN server could not be
/// reached.</exception>
/// <exception cref="TimeoutException">The specified timeout has
/// expired.</exception>
public static IPAddress Query(IPAddress address, int port = 3478,
int timeout = Int32.MaxValue)
{
address.ThrowIfNull("address");
port.ThrowIfOutOfRange("port", 0, 65535);
IPEndPoint IpEp = new IPEndPoint(address, port);
var request = new BindingRequest().Serialize();
int rto = initialRto;
using (UdpClient udp = new UdpClient())
{
// The timeout mechanism is similar to TCP. For details,
// refer to RFC 5389, Section 7.2.1. Sending over UDP.
for (int tries = 0; tries < rc; tries++)
{
// Transmit the datagram.
udp.Send(request, request.Length, IpEp);
// Set the timeout value on the socket.
udp.Client.ReceiveTimeout = rto;
try
{
byte[] datagram = udp.Receive(ref IpEp);
return BindingResponse.Deserialize(datagram).Address;
}
catch (SocketException e)
{
if (e.ErrorCode != connectionTimeout)
throw;
timeout = timeout - rto;
if (timeout <= 0)
throw new TimeoutException("The timeout has expired.");
}
catch (SerializationException)
{
throw new ProtocolViolationException("The STUN " +
"Binding Response is invalid.");
}
// Increase the timeout value.
if (tries < (rc - 1))
rto = rto * 2;
else
rto = initialRto * rm;
if (timeout < rto)
rto = timeout;
}
// Give up.
throw new SocketException(connectionTimeout);
}
}
示例8: SocksRequest
/// <summary>
/// Initializes a new instance of the SocksRequest class.
/// </summary>
/// <param name="command">The command of the request.</param>
/// <param name="destination">The IP address of the destination host.</param>
/// <param name="port">The port of the destination host.</param>
/// <exception cref="ArgumentNullException">The destination parameter
/// is null.</exception>
public SocksRequest(SocksCommand command, IPAddress destination,
ushort port) {
destination.ThrowIfNull("destination");
Command = command;
ATyp = destination.AddressFamily == AddressFamily.InterNetworkV6 ?
ATyp.IPv6 : ATyp.IPv4;
Destination = destination;
Port = port;
}