Avahi.Utility.PtrToAddress C# (CSharp) Метод

PtrToAddress() публичный статический Метод

public static PtrToAddress ( IntPtr ptr ) : IPAddress
ptr System.IntPtr
Результат System.Net.IPAddress
        public static IPAddress PtrToAddress(IntPtr ptr)
        {
            IPAddress address = null;

            if (ptr != IntPtr.Zero) {
                IntPtr buf = Stdlib.malloc (256);
                IntPtr addrPtr = avahi_address_snprint (buf, 256, ptr);
                address = IPAddress.Parse (Utility.PtrToString (addrPtr));
                Utility.Free (addrPtr);
            }

            return address;
        }

Usage Example

Пример #1
0
        private void OnServiceResolverCallback(IntPtr resolver, int iface, Protocol proto,
                                               ResolverEvent revent, IntPtr name, IntPtr type,
                                               IntPtr domain, IntPtr host, IntPtr address,
                                               UInt16 port, IntPtr txt, LookupResultFlags flags,
                                               IntPtr userdata)
        {
            ServiceInfo info;

            info.NetworkInterface = iface;
            info.Protocol         = proto;
            info.Domain           = Utility.PtrToString(domain);
            info.ServiceType      = Utility.PtrToString(type);
            info.Name             = Utility.PtrToString(name);
            info.HostName         = Utility.PtrToString(host);
            info.Address          = Utility.PtrToAddress(address);
            info.Port             = port;

            if (proto == Protocol.IPv6)
            {
                info.Address.ScopeId = iface;
            }

            ArrayList txtlist = new ArrayList();

            for (IntPtr l = txt; l != IntPtr.Zero; l = avahi_string_list_get_next(l))
            {
                IntPtr buf = avahi_string_list_get_text(l);
                int    len = avahi_string_list_get_size(l);

                byte[] txtbuf = new byte[len];
                Marshal.Copy(buf, txtbuf, 0, len);
                txtlist.Add(txtbuf);
            }

            info.Text  = (byte[][])txtlist.ToArray(typeof(byte[]));
            info.Flags = flags;

            switch (revent)
            {
            case ResolverEvent.Found:
                currentInfo = info;

                foreach (ServiceInfoHandler handler in foundListeners)
                {
                    handler(this, new ServiceInfoArgs(info));
                }
                break;

            case ResolverEvent.Failure:
                EmitFailure(client.LastError);
                break;
            }
        }
All Usage Examples Of Avahi.Utility::PtrToAddress