public void Bind(IPAddress ipAddress, ushort ipPort) { if (_sourceIpAddressAndPortAssigned) { throw new SocketException("Socket is connected."); } _sourceIpAddressAndPortAssigned = true; // if ipAddress is IP_ADDRESS_ANY, then change it to to our actual ipAddress. if (ipAddress.Equals(IPv6Any)) { sourceIpAddress = NetworkInterface.IPAddress; } else { sourceIpAddress = ipAddress; } if (ipPort == IPPortAny) { sourcePort = NetworkInterface.GetEphemeralPort(); } else { sourcePort = ipPort; } // verify that this source IP address is correct if (sourceIpAddress != NetworkInterface.IPAddress) { throw new SocketException("Source address is not correct."); } NetworkInterface.CreateSocket(this); ReceiveTimeout = 5000; }