Ejemplo n.º 1
0
 public override void SetSocketOption(SocketOptionLevel optionLevel, SocketOptionName optionName, int optionValue)
 {
     if (UnsafeMethods.setsockopt(Handle, optionLevel, optionName, ref optionValue, 4) == SocketError.SocketError)
     {
         throw new SocketException();
     }
 }
Ejemplo n.º 2
0
 public override void SetSocketOption(SocketOptionLevel optionLevel, SocketOptionName optionName, byte[] optionValue)
 {
     if (UnsafeMethods.setsockopt(Handle, optionLevel, optionName, optionValue, optionValue != null ? optionValue.Length : 0) == SocketError.SocketError)
     {
         throw new SocketException();
     }
 }
Ejemplo n.º 3
0
        private void SetLingerOption(LingerOption lref)
        {
            var optionValue = new Linger()
            {
                OnOff = lref.Enabled ? (ushort)1 : (ushort)0,
                Time  = (ushort)lref.LingerTime
            };

            if (UnsafeMethods.setsockopt(Handle, SocketOptionLevel.Socket, SocketOptionName.Linger, ref optionValue, 4) ==
                SocketError.SocketError)
            {
                throw new SocketException();
            }
        }
Ejemplo n.º 4
0
        private void SetIPv6MulticastOption(SocketOptionName optionName, IPv6MulticastOption mr)
        {
            var optionValue = new IPv6MulticastRequest()
            {
                MulticastAddress = mr.Group.GetAddressBytes(),
                InterfaceIndex   = (int)mr.InterfaceIndex
            };

            if (UnsafeMethods.setsockopt(Handle, SocketOptionLevel.IPv6, optionName, ref optionValue, IPv6MulticastRequest.Size) ==
                SocketError.SocketError)
            {
                throw new SocketException();
            }
        }
Ejemplo n.º 5
0
        private void SetMulticastOption(SocketOptionName optionName, MulticastOption mr)
        {
            IPMulticastRequest mreq = new IPMulticastRequest();

            mreq.MulticastAddress = GetIP4Address(mr.Group);
            if (mr.LocalAddress != null)
            {
                mreq.InterfaceAddress = GetIP4Address(mr.LocalAddress);
            }
            else
            {
                int num = IPAddress.HostToNetworkOrder(mr.InterfaceIndex);
                mreq.InterfaceAddress = num;
            }

            if (UnsafeMethods.setsockopt(Handle, SocketOptionLevel.IPv6, optionName, ref mreq, IPv6MulticastRequest.Size) ==
                SocketError.SocketError)
            {
                throw new SocketException();
            }
        }