internal SocketAddress(IPAddress ipAddress)
: this(ipAddress.AddressFamily,
((ipAddress.AddressFamily == AddressFamily.InterNetwork) ? IPv4AddressSize : IPv6AddressSize))
{
// No Port.
SocketAddressPal.SetPort(Buffer, 0);
if (ipAddress.AddressFamily == AddressFamily.InterNetworkV6)
{
SocketAddressPal.SetIPv6Address(Buffer, ipAddress.GetAddressBytes(), (uint)ipAddress.ScopeId);
}
else
{
#if SYSTEM_NET_PRIMITIVES_DLL
#pragma warning disable 618
uint address = unchecked((uint)ipAddress.Address);
#pragma warning restore 618
#else
byte[] ipAddressBytes = ipAddress.GetAddressBytes();
Debug.Assert(ipAddressBytes.Length == 4);
uint address = ipAddressBytes.NetworkBytesToNetworkUInt32(0);
#endif
Debug.Assert(ipAddress.AddressFamily == AddressFamily.InterNetwork);
SocketAddressPal.SetIPv4Address(Buffer, address);
}
}