GetIPEndPoint() static private method

static private GetIPEndPoint ( IntPtr sockaddr, bool map ) : IPEndPoint
sockaddr System.IntPtr
map bool
return System.Net.IPEndPoint
示例#1
0
        internal void recv_start_callback(IntPtr handle, IntPtr nread, IntPtr sockaddr, ushort flags)
        {
            int n = (int)nread;

            if (n == 0)
            {
                return;
            }

            if (Message != null)
            {
                var ep = UV.GetIPEndPoint(sockaddr);

                if (dualstack && ep.AddressFamily == System.Net.Sockets.AddressFamily.InterNetworkV6)
                {
                    var data = ep.Address.GetAddressBytes();
                    if (IsMapping(data))
                    {
                        ep = new IPEndPoint(GetMapping(data), ep.Port);
                    }
                }

                var msg = new UdpReceiveMessage(
                    ep,
                    ByteBufferAllocator.Retrieve(n),
                    (flags & (short)uv_udp_flags.UV_UDP_PARTIAL) > 0
                    );

                Message(msg);
            }
        }
示例#2
0
        unsafe internal static IPEndPoint GetSockname(Handle handle, uv_getsockname getsockname)
        {
            sockaddr_in6 addr;
            IntPtr       ptr    = new IntPtr(&addr);
            int          length = sizeof(sockaddr_in6);
            int          r      = getsockname(handle.NativeHandle, ptr, ref length);

            Ensure.Success(r);
            return(UV.GetIPEndPoint(ptr, true));
        }
示例#3
0
        internal void recv_start_callback(IntPtr handle, IntPtr nread, IntPtr sockaddr, ushort flags)
        {
            int n = (int)nread;

            if (n == 0)
            {
                return;
            }

            OnMessage(UV.GetIPEndPoint(sockaddr), Loop.buffer.Get(n));
        }
示例#4
0
 internal NetworkInterface(uv_interface_address_t *iface)
 {
     Name     = Marshal.PtrToStringAnsi(iface->name);
     Internal = iface->is_internal != 0;
     byte[] phys_addr = new byte[6];
     for (int i = 0; i < phys_addr.Length; i++)
     {
         phys_addr[i] = iface->phys_addr[i];
     }
     PhysicalAddress = new PhysicalAddress(phys_addr);
     Address         = UV.GetIPEndPoint(new IntPtr(&iface->sockaddr)).Address;
     Netmask         = UV.GetIPEndPoint(new IntPtr(&iface->netmask)).Address;
 }
示例#5
0
        void recv_start_callback(IntPtr handle, IntPtr nread, IntPtr sockaddr, ushort flags)
        {
            int n = (int)nread;

            if (n == 0)
            {
                return;
            }

            if (Message != null)
            {
                var ep = UV.GetIPEndPoint(sockaddr, true);

                var msg = new UdpReceiveMessage(
                    ep,
                    ByteBufferAllocator.Retrieve(n),
                    (flags & (short)uv_udp_flags.UV_UDP_PARTIAL) > 0
                    );

                Message(msg);
            }
        }
示例#6
0
 internal NetworkInterface(uv_interface_address_t *iface)
 {
     Name     = Marshal.PtrToStringAnsi(iface->name);
     Internal = iface->is_internal != 0;
     Address  = UV.GetIPEndPoint((IntPtr)(((long)new IntPtr(iface)) + (long)(sizeof(IntPtr) + sizeof(int)))).Address;
 }