Exemple #1
0
 private void M_eventManager_QueryRecordAnswered(DNSSDService service, DNSSDFlags flags, uint ifIndex, string fullname, DNSSDRRType rrtype, DNSSDRRClass rrclass, object rdata, uint ttl)
 {
     if (rdata is byte[])
     {
         IPAddress addr = new IPAddress(rdata as byte[]);
     }
 }
Exemple #2
0
        QueryAnswered
        (
            DNSSDService service,
            DNSSDFlags flags,
            uint ifIndex,
            String fullName,
            DNSSDRRType rrtype,
            DNSSDRRClass rrclass,
            Object rdata,
            uint ttl
        )
        {
            //
            // Stop the resolve to reduce the burden on the network
            //
            m_resolver.Stop();
            m_resolver = null;

            PeerData peer = (PeerData)comboBox1.SelectedItem;
            uint     bits = BitConverter.ToUInt32((Byte[])rdata, 0);

            System.Net.IPAddress address = new System.Net.IPAddress(bits);

            peer.Address = address;
        }
Exemple #3
0
        public void ServiceLost(DNSSDService service, DNSSDFlags flags, uint ifIndex, String serviceName, String regType,
                                String domain)
        {
            string fullname = serviceName + "." + regType + domain;

            base.remove(fullname);
        }
Exemple #4
0
        ServiceRegistered

        (

            DNSSDService service,

            DNSSDFlags flags,

            String name,

            String regType,

            String domain

        )

        {
            m_name = name;



            try

            {
                m_browser = m_service.Browse(0, 0, "_p2pchat._udp", null, m_eventManager);
            }

            catch

            {
                MessageBox.Show("Browse Failed", "Error");

                Application.Exit();
            }
        }
Exemple #5
0
        public void ServiceResolved(DNSSDService service,
                                    DNSSDFlags flags,
                                    uint ifIndex,
                                    String fullName,
                                    String hostName,
                                    ushort port,
                                    TXTRecord txtRecord)
        {
            String user     = null;
            String password = null;
            String path     = null;

            if (txtRecord.ContainsKey("u"))
            {
                user = txtRecord.GetValueForKey("u").ToString();
            }
            if (txtRecord.ContainsKey("p"))
            {
                password = txtRecord.GetValueForKey("p").ToString();
            }
            if (txtRecord.ContainsKey("path"))
            {
                path = txtRecord.GetValueForKey("path").ToString();
            }
            base.add(fullName, hostName, port, user, password, path);
            service.Stop();
        }
        ServiceFound
        (
            DNSSDService sref,
            DNSSDFlags flags,
            uint ifIndex,
            String serviceName,
            String regType,
            String domain
        )
        {
            if (serviceName != m_name)
            {
                PeerData peer = new PeerData();

                peer.InterfaceIndex = ifIndex;
                peer.Name           = serviceName;
                peer.Type           = regType;
                peer.Domain         = domain;
                peer.Address        = null;

                comboBox1.Items.Add(peer);

                if (comboBox1.Items.Count == 1)
                {
                    comboBox1.SelectedIndex = 0;
                }
            }
        }
        public void ServiceResolved
        (
            DNSSDService sref,
            DNSSDFlags flags,
            uint ifIndex,
            String fullName,
            String hostName,
            ushort port,
            TXTRecord txtRecord
        )
        {
            ResolveData data = new ResolveData();

            data.InterfaceIndex = ifIndex;
            data.FullName       = fullName;
            data.HostName       = hostName;
            data.Port           = port;
            data.TxtRecord      = txtRecord;

            //
            // Don't forget to stop the resolver. This eases the burden on the network
            //
            resolver.Stop();
            resolver = null;

            Populate((BrowseData)browseList.SelectedItem, data);
        }
        public void ServiceLost
        (
            DNSSDService sref,
            DNSSDFlags flags,
            uint ifIndex,
            String serviceName,
            String regType,
            String domain
        )
        {
            int index = browseList.Items.IndexOf(serviceName);

            //
            // See above comment in ServiceFound about reference counting
            //
            if (index != -1)
            {
                BrowseData data = (BrowseData)browseList.Items[index];

                data.Refs--;

                if (data.Refs == 0)
                {
                    browseList.Items.Remove(data);
                    browseList.Invalidate();
                }
            }
        }
        ServiceResolved
        (
            DNSSDService sref,
            DNSSDFlags flags,
            uint ifIndex,
            String fullName,
            String hostName,
            ushort port,
            TXTRecord txtRecord
        )
        {
            m_resolver.Stop();
            m_resolver = null;

            PeerData peer = (PeerData)comboBox1.SelectedItem;

            peer.Port = port;

            try
            {
                m_resolver = m_service.QueryRecord(0, ifIndex, hostName, DNSSDRRType.kDNSSDType_A, DNSSDRRClass.kDNSSDClass_IN, m_eventManager);
            }
            catch
            {
                MessageBox.Show("QueryRecord Failed", "Error");
                Application.Exit();
            }
        }
Exemple #10
0
        public void ServiceResolved(DNSSDService sref, DNSSDFlags flags, uint ifIndex, string serviceName, string hostName, ushort port, TXTRecord txtRecord)
        {
            var comm = foundComms.SingleOrDefault(r => r.NetworkResolverInfo.Resolver == sref);

            comm.NetworkResolverInfo.InterfaceIndex = ifIndex;
            comm.NetworkResolverInfo.HostName       = hostName;
            comm.NetworkResolverInfo.Port           = port;

            if (txtRecord != null)
            {
                try
                {
                    comm.NetworkResolverInfo.DeviceName   = Encoding.ASCII.GetString((byte[])txtRecord.GetValueForKey(DeviceNameKey));
                    comm.NetworkResolverInfo.SerialNumber = Encoding.ASCII.GetString((byte[])txtRecord.GetValueForKey(SerialNumberKey));
                }
                catch (Exception e)
                {
                    //Log.Error("Error reading address info", e);
                }
            }

            (comm.NetworkResolverInfo.Resolver as DNSSDService).Stop();

            comm.NetworkResolverInfo.Resolver = sref.GetAddrInfo(flags, ifIndex, DNSSDAddressFamily.kDNSSDAddressFamily_IPv4, hostName, this.eventManager);
        }
Exemple #11
0
 private void M_eventManager_ServiceFound(DNSSDService browser, DNSSDFlags flags, uint ifIndex, string serviceName, string regtype, string domain)
 {
     Program.logIt($"serviceName={serviceName}");
     if (string.Compare("mywebservice", serviceName) == 0)
     {
         m_service.Resolve(0, ifIndex, serviceName, regtype, domain, m_eventManager);
     }
 }
Exemple #12
0
 //
 // ServiceFound
 //
 // This call is invoked by the DNSService core.  We create
 // a BrowseData object and invoked the appropriate method
 // in the GUI thread so we can update the UI
 //
 public void ServiceFound(DNSSDService service,
                          DNSSDFlags flags,
                          uint ifIndex,
                          String serviceName,
                          String regType,
                          String domain)
 {
     service.Resolve(flags, ifIndex, serviceName, regType, domain, eventManager);
 }
Exemple #13
0
 private void ServiceFound(DNSSDService browser, DNSSDFlags flags, uint ifIndex, string serviceName, string regType, string domain)
 {
     Log("Service " + serviceName + " found ");
     try {
         DNSSDService resolver = browser.Resolve(0, ifIndex, serviceName, regType, domain, eventManager);
         resolvers.Add(resolver, serviceName);
     } catch {
         Log("DNSSDService.Resolve() failed");
     }
 }
Exemple #14
0
        private void EventManager_AddressFound(DNSSDService service, DNSSDFlags flags, uint ifIndex, string hostname, DNSSDAddressFamily addressFamily, string address, uint ttl)
        {
            var comm = foundComms.SingleOrDefault(r => r.NetworkResolverInfo.Resolver == service);

            if (comm != null)
            {
                comm.NetworkResolverInfo.IpAddress = address;
                comm.NetworkResolverInfo.Active    = true;
                (comm.NetworkResolverInfo.Resolver as DNSSDService).Stop();
                comm.NetworkResolverInfo.Resolver = null;
            }
        }
Exemple #15
0
        private void ServiceResolved(DNSSDService resolver, DNSSDFlags flags, uint ifIndex, string fullName, string hostName, ushort port, TXTRecord txtRecord)
        {
            Log("Service " + hostName + ":" + port + " resolved");
            resolver.Stop();
            string serviceName = resolvers[resolver];
            Server server      = new Server(serviceName, hostName, port, this);

            Mutex.WaitOne();
            servers.Add(server);
            resolvers.Remove(resolver);
            ServerAdded?.Invoke(server);
            Mutex.ReleaseMutex();
        }
Exemple #16
0
 private void M_eventManager_ServiceResolved(DNSSDService service, DNSSDFlags flags, uint ifIndex, string fullname, string hostname, ushort port, TXTRecord record)
 {
     Program.logIt($"fullname={fullname}, hostname={hostname}, port={port}");
     if (record != null)
     {
         uint count = record.GetCount();
         for (uint i = 0; i < count; i++)
         {
             string  k = record.GetKeyAtIndex(i);
             dynamic v = record.GetValueAtIndex(i);
         }
     }
     m_service.QueryRecord(0, ifIndex, hostname, DNSSDRRType.kDNSSDType_A, DNSSDRRClass.kDNSSDClass_IN, m_eventManager);
 }
Exemple #17
0
        public void ServiceLost(DNSSDService sref, DNSSDFlags flags, uint ifIndex, string serviceName, string regType, string domain)
        {
            var itemToRemove = foundComms.SingleOrDefault(r => r.NetworkResolverInfo.Name == serviceName);

            if (itemToRemove != null)
            {
                if (itemToRemove.NetworkResolverInfo.Resolver != null)
                {
                    (itemToRemove.NetworkResolverInfo.Resolver as DNSSDService).Stop();
                }
                itemToRemove.NetworkResolverInfo.Connected = false;
                itemToRemove.NetworkResolverInfo.Active    = false;
                foundComms.Remove(itemToRemove);
            }
        }
        public void ServiceLost(DNSSDService sref, DNSSDFlags flags, uint ifIndex, string serviceName, string regType, string domain)
        {
            Log.InfoFormat("Bonjour lost service: serviceName: {0}, domain: {1}, ifIndex: {2}", serviceName, domain, ifIndex);

            var itemToRemove = foundComms.SingleOrDefault(r => r.NetworkResolverInfo.Name == serviceName);

            if (itemToRemove != null)
            {
                if (itemToRemove.NetworkResolverInfo.Resolver != null)
                {
                    (itemToRemove.NetworkResolverInfo.Resolver as DNSSDService).Stop();
                }
                itemToRemove.NetworkResolverInfo.Connected = false;
                itemToRemove.NetworkResolverInfo.Active    = false;
                foundComms.Remove(itemToRemove);
            }
        }
Exemple #19
0
        public void ServiceFound(DNSSDService sref, DNSSDFlags flags, uint ifIndex, string serviceName, string regType, string domain)
        {
            if (foundComms.Any(r => r.NetworkResolverInfo.Name == serviceName)) //TODO we have an issue with same device discovered many times
            {
                return;
            }
            NetworkCommunication comm = new NetworkCommunication(new NetworkResolverInfo());

            comm.NetworkResolverInfo.InterfaceIndex = ifIndex;
            comm.NetworkResolverInfo.Name           = serviceName;
            comm.NetworkResolverInfo.Type           = regType;
            comm.NetworkResolverInfo.Domain         = domain;
            comm.NetworkResolverInfo.Refs           = 1;
            comm.NetworkResolverInfo.Connected      = true;

            foundComms.Add(comm);
            comm.NetworkResolverInfo.Resolver = service.Resolve(0, comm.NetworkResolverInfo.InterfaceIndex, comm.NetworkResolverInfo.Name, comm.NetworkResolverInfo.Type, comm.NetworkResolverInfo.Domain, eventManager);
        }
Exemple #20
0
 private void eventManager_AddressFound(DNSSDService service, DNSSDFlags flags, uint ifIndex, string hostname, DNSSDAddressFamily addressFamily, string address, uint ttl)
 {
     try
     {
         strRoutine = this.Name + "; " + MethodBase.GetCurrentMethod().Name + "; ";
         Console.WriteLine("----------------------------------------");
         Console.WriteLine("FOUND ADDRESS");
         Console.WriteLine("----------------------------------------");
         int    pFrom1  = hostname.IndexOf("") + "".Length;
         int    pTo1    = hostname.LastIndexOf(".l");
         String result1 = hostname.Substring(pFrom1, pTo1 - pFrom1);
         row = new string[] { "-", hostname, result1, address };
         dataGridView1.Rows.Add(row);
     }
     catch (Exception ex)
     {
         csLog.LogError(strRoutine + ex.Message);
     }
 }
        public void ServiceFound(DNSSDService sref, DNSSDFlags flags, uint ifIndex, string serviceName, string regType, string domain)
        {
            Log.InfoFormat("Bonjour found service: serviceName: {0}, domain: {1}, ifIndex: {2}", serviceName, domain, ifIndex);

            if (foundComms.Any(r => r.NetworkResolverInfo.Name == serviceName))
            {
                return;
            }
            V45NetworkCommunication comm = new V45NetworkCommunication(new NetworkResolverInfo());

            comm.NetworkResolverInfo.InterfaceIndex = ifIndex;
            comm.NetworkResolverInfo.Name           = serviceName;
            comm.NetworkResolverInfo.Type           = regType;
            comm.NetworkResolverInfo.Domain         = domain;
            comm.NetworkResolverInfo.Refs           = 1;
            comm.NetworkResolverInfo.Connected      = true;

            foundComms.Add(comm);
            comm.NetworkResolverInfo.Resolver = service.Resolve(0, comm.NetworkResolverInfo.InterfaceIndex, comm.NetworkResolverInfo.Name, comm.NetworkResolverInfo.Type, comm.NetworkResolverInfo.Domain, eventManager);
        }
        ServiceLost
        (
            DNSSDService sref,
            DNSSDFlags flags,
            uint ifIndex,
            String serviceName,
            String regType,
            String domain
        )
        {
            PeerData peer = new PeerData();

            peer.InterfaceIndex = ifIndex;
            peer.Name           = serviceName;
            peer.Type           = regType;
            peer.Domain         = domain;
            peer.Address        = null;

            comboBox1.Items.Remove(peer);
        }
        public void ServiceLost
        (
            DNSSDService sref,
            DNSSDFlags flags,
            uint ifIndex,
            String serviceName,
            String regType,
            String domain
        )
        {
            BrowseData data = new BrowseData();

            data.InterfaceIndex = ifIndex;
            data.Name           = serviceName;
            data.Type           = regType;
            data.Domain         = domain;

            browseList.Items.Remove(data);
            browseList.Invalidate();
        }
Exemple #24
0
        private void ServiceLost(DNSSDService browser, DNSSDFlags flags, uint ifIndex, string serviceName, string regType, string domain)
        {
            Log("Service " + serviceName + " lost");
            Server server = null;

            Mutex.WaitOne();
            foreach (Server item in servers)
            {
                if (item.Name == serviceName)
                {
                    server = item;
                    break;
                }
            }
            if (server != null)
            {
                servers.Remove(server);
                ServerRemoved?.Invoke(server);
            }
            Mutex.ReleaseMutex();
        }
Exemple #25
0
 private void EventManager_ServiceResolved(DNSSDService service, DNSSDFlags flags, uint ifIndex, string fullname, string hostname, ushort port, TXTRecord record)
 {
     try
     {
         strRoutine = this.Name + "; " + MethodBase.GetCurrentMethod().Name + "; ";
         //throw new NotImplementedException();
         Console.WriteLine("-------------------eventManager_ServiceResolved---------------------");
         Console.WriteLine("DNSSDService " + service + "\nDNSSDFlags " + flags + "\nifindex " + ifIndex + "\nfullname " + fullname + "hostname " + hostname + "\nport " + port + "\nrecord " + record);
         //var str = System.Text.Encoding.Default.GetString(record.GetValueForKey("macaddress"));
         //Console.WriteLine("mac " + str);
         Console.WriteLine("----------------------------------------");
         DNSSDEventManager eventManager = new DNSSDEventManager();
         //**********AddressFound************//
         eventManager.AddressFound += new _IDNSSDEvents_AddressFoundEventHandler(eventManager_AddressFound);
         DNSSDAddressFamily family = new DNSSDAddressFamily();
         service.GetAddrInfo(flags, ifIndex, family, hostname, eventManager);
     }
     catch (Exception ex)
     {
         csLog.LogError(strRoutine + ex.Message);
     }
 }
Exemple #26
0
        // QueryAnswered
        //
        // Called by DNSServices core as a result of DNSService.QueryRecord()
        public void QueryAnswered(DNSSDService service, DNSSDFlags flags, uint ifIndex, String fullName, DNSSDRRType rrtype, DNSSDRRClass rrclass, Object rdata, uint ttl)
        {
            m_resolver.Stop();
            m_resolver = null;

            PeerData peer = this.selectedPeer;

            uint bits = BitConverter.ToUInt32((Byte[])rdata, 0);
            System.Net.IPAddress address = new System.Net.IPAddress(bits);

            peer.Address = address;

            try
            {
                IPEndPoint ipe = new IPEndPoint(address, peer.Port);
                m_socket.Connect(ipe);
                m_socket.BeginReceive(m_buffer, 0, BUFFER_SIZE, 0, new AsyncCallback(this.OnReadSocket), this);
            }
            catch (Exception e)
            {
                System.Console.WriteLine(e.Message);
            }
        }
        //
        // ServiceFound
        //
        // This call is invoked by the DNSService core.  We create
        // a BrowseData object and invoked the appropriate method
        // in the GUI thread so we can update the UI
        //
        public void ServiceFound
        (
            DNSSDService sref,
            DNSSDFlags flags,
            uint ifIndex,
            String serviceName,
            String regType,
            String domain
        )
        {
            int index = browseList.Items.IndexOf(serviceName);

            //
            // Check to see if we've seen this service before. If the machine has multiple
            // interfaces, we could potentially get called back multiple times for the
            // same service. Implementing a simple reference counting scheme will address
            // the problem of the same service showing up more than once in the browse list.
            //
            if (index == -1)
            {
                BrowseData data = new BrowseData();

                data.InterfaceIndex = ifIndex;
                data.Name           = serviceName;
                data.Type           = regType;
                data.Domain         = domain;
                data.Refs           = 1;

                browseList.Items.Add(data);
                browseList.Invalidate();
            }
            else
            {
                BrowseData data = (BrowseData)browseList.Items[index];
                data.Refs++;
            }
        }
Exemple #28
0
        void eventManager_ServiceFound(DNSSDService browser1, DNSSDFlags flags, uint ifIndex, string serviceName, string regtype, string domain)
        {
            strRoutine = this.Name + "; " + MethodBase.GetCurrentMethod().Name + "; ";
            try
            {
                Console.WriteLine("browser: " + browser1 + "\nDNSSDFlags " + flags + "\nifIndex " + ifIndex + "\nserviceName: " + serviceName + "\nregtype: " + regtype + "\ndomain: " + domain);
                mac = serviceName;
                String St = serviceName;

                int pFrom = St.IndexOf("[") + "[".Length;
                int pTo   = St.LastIndexOf("]");

                int pFrom1 = St.IndexOf("") + "".Length;
                int pTo1   = St.LastIndexOf("[");

                String result  = St.Substring(pFrom, pTo - pFrom);
                String result1 = St.Substring(pFrom1, pTo1 - pFrom1);
                mac     = result;
                macHost = result1;
                row     = new string[] { mac, macHost, "-", "-" };
                dataGridView1.Rows.Add(row);

                DNSSDEventManager eventManager = new DNSSDEventManager();
                //**********ServiceResolved************//
                eventManager.ServiceResolved += new _IDNSSDEvents_ServiceResolvedEventHandler(EventManager_ServiceResolved);

                //eventManager.AddressFound += new _IDNSSDEvents_AddressFoundEventHandler(eventManager_AddressFound);
                browser1.Resolve(flags, ifIndex, serviceName, regtype, domain, eventManager);
                DNSSDAddressFamily family = new DNSSDAddressFamily();
                browser1.GetAddrInfo(flags, ifIndex, family, "", eventManager);
            }
            catch (Exception ex)
            {
                csLog.LogError(strRoutine + ex.Message);
            }
            //var ipAddress = IPMacMapper.FindIPFromMacAddress("mac-address");
        }
Exemple #29
0
        // ServiceRegistered
        //
        // Called by DNSServices core as a result of Register()
        public void ServiceRegistered(DNSSDService service, DNSSDFlags flags, String name, String regType, String domain)
        {
            m_name = name;

            try
            {
                m_browser = m_service.Browse(0, 0, regName, null, m_eventManager);
                System.Console.WriteLine("Registered as " + m_name + "...");
                System.Console.WriteLine("Waiting for a connection...");
            }
            catch
            {
                System.Console.WriteLine("Error - Browse Failed");
            }
        }
Exemple #30
0
        // ServiceLost
        //
        // Called by DNSServices core as a result of a Browse call
        public void ServiceLost(DNSSDService sref, DNSSDFlags flags, uint ifIndex, String serviceName, String regType, String domain)
        {
            PeerData peer = new PeerData();

            peer.InterfaceIndex = ifIndex;
            peer.Name = serviceName;
            peer.Type = regType;
            peer.Domain = domain;
            peer.Address = null;

            System.Console.WriteLine("Service Lost - " + peer);
        }
Exemple #31
0
        // callback from browse
        // params service discovery ref, status flags, interface index, error code ?, service name,
        //      registration type, domain, context=null
        public void ServiceFound(DNSSDService sref, DNSSDFlags flags, uint ifIndex, String serviceName,
            String regType, String domain)
        {
            m_browser.Stop();
            m_eventManager.ServiceFound -= new _IDNSSDEvents_ServiceFoundEventHandler(ServiceFound);
            m_eventManager.ServiceResolved += new _IDNSSDEvents_ServiceResolvedEventHandler(ServiceResolved);

            try
            {
                m_resolver = m_service.Resolve(0, ifIndex, serviceName, regType, domain, m_eventManager);
            }
            catch
            {
                log("Unable to Resolve service");
                Thread.Sleep(1000);
                // tidy up
                m_eventManager.ServiceResolved -= new _IDNSSDEvents_ServiceResolvedEventHandler(ServiceResolved);
                Application.Exit();
            }
        }
Exemple #32
0
        // ServiceResolved
        //
        // Called by DNSServices core as a result of DNSService.Resolve()
        public void ServiceResolved(DNSSDService sref, DNSSDFlags flags, uint ifIndex, String fullName, String hostName, ushort port, TXTRecord txtRecord)
        {
            m_resolver.Stop();
            m_resolver = null;

            PeerData peer = this.selectedPeer;

            peer.Port = port;

            try
            {
                m_resolver = m_service.QueryRecord(0, ifIndex, hostName, DNSSDRRType.kDNSSDType_A, DNSSDRRClass.kDNSSDClass_IN, m_eventManager);
            }
            catch
            {
                System.Console.WriteLine("Error - QueryRecord Failed");
            }
        }
Exemple #33
0
        //
        // ServiceResolved
        //
        // Called by DNSServices core as a result of DNSService.Resolve()
        // call
        //
        public void ServiceResolved(

                    DNSSDService sref,

                    DNSSDFlags flags,

                    uint ifIndex,

                    String fullName,

                    String hostName,

                    ushort port,

                    TXTRecord txtRecord

                    )
        {
            m_resolver.Stop();

            m_resolver = null;

            PeerData peer = (PeerData)comboBox1.SelectedItem;

            peer.Port = port;

            try

            {

                m_resolver = m_service.QueryRecord(0, ifIndex, hostName, DNSSDRRType.kDNSSDType_A, DNSSDRRClass.kDNSSDClass_IN, m_eventManager );

            }

            catch

            {

                MessageBox.Show("QueryRecord Failed", "Error");

                Application.Exit();

            }
        }
 public void ServiceRegistered(DNSSDService service, DNSSDFlags flags, String name, String regType, String domain)
 {
     Logger.Instance.eventLog.WriteEntry("Bonjour service running", EventLogEntryType.Information);
 }
Exemple #35
0
        //
        // QueryAnswered
        //
        // Called by DNSServices core as a result of DNSService.QueryRecord()
        // call
        //
        public void QueryAnswered(
            DNSSDService    service, 
            DNSSDFlags      flags,
            uint            ifIndex,
            String          fullName,
            DNSSDRRType     rrtype,
            DNSSDRRClass    rrclass,
            Object          rdata,
            uint            ttl
            )
        {
            m_resolver.Stop();

            m_resolver = null;

            PeerData peer = (PeerData) comboBox1.SelectedItem;

            uint bits = BitConverter.ToUInt32( (Byte[])rdata, 0);
            System.Net.IPAddress address = new System.Net.IPAddress(bits);

            peer.Address = address;
        }
Exemple #36
0
 //
 // ServiceFound
 //
 // This call is invoked by the DNSService core.  We create
 // a BrowseData object and invoked the appropriate method
 // in the GUI thread so we can update the UI
 //
 public void ServiceFound(DNSSDService service,
     DNSSDFlags flags,
     uint ifIndex,
     String serviceName,
     String regType,
     String domain)
 {
     service.Resolve(flags, ifIndex, serviceName, regType, domain, _eventManager);
 }
        void AddressFound(DNSSDService service, DNSSDFlags flags, uint ifIndex, string hostname, DNSSDAddressFamily addressFamily, string address, uint ttl)
        {
            service.Stop();

            DoInvoke(() => SetServerAddress(hostname, address));
        }
Exemple #38
0
 public void ServiceResolved(DNSSDService service,
     DNSSDFlags flags,
     uint ifIndex,
     String fullName,
     String hostName,
     ushort port,
     TXTRecord txtRecord)
 {
     String user = null;
     String password = null;
     String path = null;
     if (txtRecord.ContainsKey("u"))
     {
         user = ByteArrayToString((byte[]) txtRecord.GetValueForKey("u"));
     }
     if (txtRecord.ContainsKey("p"))
     {
         password = ByteArrayToString((byte[]) txtRecord.GetValueForKey("p"));
     }
     if (txtRecord.ContainsKey("path"))
     {
         path = ByteArrayToString((byte[]) txtRecord.GetValueForKey("path"));
     }
     base.add(fullName, hostName, port, user, password, path);
     service.Stop();
 }
        void ServiceFound(DNSSDService browser, DNSSDFlags flags, uint ifIndex, string serviceName, string regtype, string domain)
        {
            var resolver = service.Resolve(flags, ifIndex, serviceName, regtype, domain, this.eventManager);

            this.inProgress.Add(resolver, serviceName);
        }
 void ServiceLost(DNSSDService browser, DNSSDFlags flags, uint ifIndex, string serviceName, string regtype, string domain)
 {
     DoInvoke(() => RemoveServer(serviceName));
 }
        void ServiceResolved(DNSSDService resolver, DNSSDFlags flags, uint ifIndex, string fullname, string hostname, ushort port, TXTRecord record)
        {
            var info = new ServerInfo
            {
                Index = (int)ifIndex,
                FullName = fullname,
                HostName = hostname,
                Port = port
            };

            if (this.inProgress.ContainsKey(resolver))
            {
                info.Name = this.inProgress[resolver];

                this.inProgress.Remove(resolver);
            }
            resolver.Stop();

            this.service.GetAddrInfo(
                flags,
                ifIndex,
                DNSSDAddressFamily.kDNSSDAddressFamily_IPv4,
                hostname,
                this.eventManager);

            DoInvoke(() => Servers.Add(info));
        }
Exemple #42
0
        // ServiceFound
        //
        // Called by DNSServices core as a result of a Browse call
        public void ServiceFound(DNSSDService sref, DNSSDFlags flags, uint ifIndex, String serviceName, String regType, String domain)
        {
            if (serviceName != m_name)
            {
                PeerData peer = new PeerData();

                peer.InterfaceIndex = ifIndex;
                peer.Name = serviceName;
                peer.Type = regType;
                peer.Domain = domain;
                peer.Address = null;

                this.selectedPeer = peer;

                System.Console.WriteLine("Connected to " + peer + "...");

                this.selectNewPeer();
            }
        }
Exemple #43
0
        //
        // ServiceLost
        //
        // Called by DNSServices core as a result of a Browse call
        //
        public void ServiceLost(

                    DNSSDService sref,

                    DNSSDFlags flags,

                    uint ifIndex,

                    String serviceName,

                    String regType,

                    String domain

                    )
        {
            PeerData peer = new PeerData();

            peer.InterfaceIndex = ifIndex;

            peer.Name = serviceName;

            peer.Type = regType;

            peer.Domain = domain;

            peer.Address = null;

            comboBox1.Items.Remove(peer);
        }
 private static void EventManager_ServiceFound(DNSSDService browser, DNSSDFlags flags, uint ifIndex, string serviceName, string regtype, string domain)
 {
     throw new NotImplementedException();
 }
Exemple #45
0
 public void ServiceLost(DNSSDService service,
     DNSSDFlags flags,
     uint ifIndex,
     String serviceName,
     String regType,
     String domain)
 {
     string fullname = serviceName + "." + regType + domain;
     base.remove(fullname);
 }
Exemple #46
0
        //
        // ServiceFound
        //
        // Called by DNSServices core as a result of a Browse call
        //
        public void ServiceFound(
				    DNSSDService    sref,
				    DNSSDFlags  	flags,
				    uint			ifIndex,
                    String          serviceName,
                    String          regType,
                    String          domain
				    )
        {
            if (serviceName != m_name)

            {

                PeerData peer = new PeerData();

                peer.InterfaceIndex = ifIndex;

                peer.Name = serviceName;

                peer.Type = regType;

                peer.Domain = domain;

                peer.Address = null;

                comboBox1.Items.Add(peer);

                if (comboBox1.Items.Count == 1)

                {

                    comboBox1.SelectedIndex = 0;

                }

            }
        }
 private static void EventManager_ServiceRegistered(DNSSDService service, DNSSDFlags flags, string name, string regtype, string domain)
 {
 }
Exemple #48
0
        // ServiceRegistered
        //
        // Called by DNSServices core as a result of Register()
        // call
        //
        public void ServiceRegistered(

                    DNSSDService service,

                    DNSSDFlags flags,

                    String name,

                    String regType,

                    String domain

                    )
        {
            m_name = name;

            try

            {

                m_browser = m_service.Browse(0, 0, "_p2pchat._udp", null, m_eventManager);

            }

            catch

            {

                MessageBox.Show("Browse Failed", "Error");

                Application.Exit();

            }
        }
        //
        // ServiceFound
        //
        // This call is invoked by the DNSService core.  We create
        // a BrowseData object and invoked the appropriate method
        // in the GUI thread so we can update the UI
        //
        public void ServiceFound(
                        DNSSDService sref,
                        DNSSDFlags flags,
                        uint ifIndex,
                        String serviceName,
                        String regType,
                        String domain
                        )
        {
            int index = browseList.Items.IndexOf(serviceName);

            //
            // Check to see if we've seen this service before. If the machine has multiple
            // interfaces, we could potentially get called back multiple times for the
            // same service. Implementing a simple reference counting scheme will address
            // the problem of the same service showing up more than once in the browse list.
            //
            if (index == -1)
            {
                BrowseData data = new BrowseData();

                data.InterfaceIndex = ifIndex;
                data.Name = serviceName;
                data.Type = regType;
                data.Domain = domain;
                data.Refs = 1;

                browseList.Items.Add(data);
                browseList.Invalidate();
            }
            else
            {
                BrowseData data = (BrowseData) browseList.Items[index];
                data.Refs++;
            }
        }
Exemple #50
0
        public void ServiceResolved(DNSSDService sref, DNSSDFlags flags, uint ifIndex, String fullName, String hostName, ushort port, TXTRecord txtRecord)
        {
            m_resolver.Stop();
            m_eventManager.ServiceResolved -= new _IDNSSDEvents_ServiceResolvedEventHandler(ServiceResolved);

            try
            {
                // connect to server
                int i = 0;
                IPAddress[] ipa = Dns.GetHostAddresses(hostName);
                for (i = 0; i < ipa.Length; i++)
                {
                    if (!(ipa[i].IsIPv6LinkLocal || ipa[i].IsIPv6SiteLocal || ipa[i].IsIPv6Multicast))
                        break;
                }
                IPEndPoint ep = new IPEndPoint(ipa[i], port);
                skt.Connect(ep);
                byte[] buffer = new byte[12];
                skt.Receive(buffer);
                if ((buffer[1] << 8) + buffer[2] == NODENUMBER)
                {
                    nodenumber = ((long)buffer[3] << 40) + ((long)buffer[4] << 32) + (buffer[5] << 24) + (buffer[6] << 16)
                        + (buffer[7] << 8) + buffer[8];
                }
                else
                {
                    return;
                }
                skt.BeginReceive(inputbuffer, 0, 2000, SocketFlags.None, (AsyncCallback)InputTask, skt);
                serverconnected = true;
                SendHexString(INITCOMPLETE + nodenumber.ToString("X12") + nodenumber.ToString("X12"));
            }
            catch
            {
            }
        }
        public void ServiceLost(
                        DNSSDService sref,
                        DNSSDFlags flags,
                        uint ifIndex,
                        String serviceName,
                        String regType,
                        String domain
                        )
        {
            int index = browseList.Items.IndexOf(serviceName);

            //
            // See above comment in ServiceFound about reference counting
            //
            if (index != -1)
            {
                BrowseData data = (BrowseData) browseList.Items[index];

                data.Refs--;

                if (data.Refs == 0)
                {
                    browseList.Items.Remove(data);
                    browseList.Invalidate();
                }
            }
        }
 public void ServiceRegistered(DNSSDService service, DNSSDFlags flags, String name, String regType, String domain)
 {
     Logger.Instance.eventLog.WriteEntry("Bonjour service running", EventLogEntryType.Information);
 }
        public void ServiceResolved(
						DNSSDService    sref,  
						DNSSDFlags      flags,
						uint			ifIndex,
                        String          fullName,
                        String          hostName,
                        ushort           port,
                        TXTRecord       txtRecord
						)
        {
            ResolveData data = new ResolveData();

            data.InterfaceIndex = ifIndex;
            data.FullName		= fullName;
            data.HostName		= hostName;
            data.Port			= port;
            data.TxtRecord		= txtRecord;

            //
            // Don't forget to stop the resolver. This eases the burden on the network
            //
            resolver.Stop();
            resolver = null;

            Populate((BrowseData) browseList.SelectedItem, data);
        }
Exemple #54
0
        public void ServiceResolved(DNSSDService sref, DNSSDFlags flags, uint ifIndex, String fullName,
            String hostName, ushort port, TXTRecord txtRecord)
        {
            m_resolver.Stop();
            m_eventManager.ServiceResolved -= new _IDNSSDEvents_ServiceResolvedEventHandler(ServiceResolved);

            log("OpenLCB service on " + hostName + ":" + port.ToString());

            try
            {
                // connect to server
                int i = 0;
                IPAddress[] ipa = Dns.GetHostAddresses(hostName);
                for (i = 0; i < ipa.Length; i++)
                {
                    if (ipa[i].AddressFamily == AddressFamily.InterNetwork)
                        break;
                }
                IPEndPoint ep = new IPEndPoint(ipa[i], port);
                connects[0].skt.Connect(ep);
                connects[0].inuse = true;
                byte[] buffer = new byte[12];
                connects[0].skt.Receive(buffer);
                if ((buffer[1] << 8) + buffer[2] == NODENUMBER)
                {
                    connects[0].nodenumber = ((long)buffer[3] << 40) + ((long)buffer[4] << 32) + (buffer[5] << 24)
                        + (buffer[6] << 16) + (buffer[7] << 8) + buffer[8];
                    log("OpenLCB Node Number " + connects[0].nodenumber.ToString("X12"));
                }
                else
                {
                    log("No node number allocated.");
                    return;
                }

                while (true)
                {
                    int size = connects[0].skt.Receive(connects[0].buffer);
                    if (size == 0)
                        break;
                    if (LogCB.Checked)
                    {
                        string l = "";
                        for (i = 0; i < size; i++)
                            l += connects[0].buffer[i].ToString("X2");
                        log("< (" + 0.ToString() + ") " + l);
                    }
                    int p = 0;
                    while (p < size)
                    {
                        connects[0].UpdateFilters(connects[0].buffer, p, localhub);
                        SendToAll(connects[0].buffer, p, 0);
                        p += connects[0].buffer[p];
                    }
                } // end of while true
            }
            catch (Exception e)
            {
                log("OpenLCB server connection failed " + e.ToString());
            }
        }
        public void ServiceLost(
                        DNSSDService    sref,
                        DNSSDFlags      flags,
                        uint            ifIndex,
                        String          serviceName,
                        String          regType,
                        String          domain
                        )
        {
            BrowseData data = new BrowseData();

            data.InterfaceIndex = ifIndex;
            data.Name           = serviceName;
            data.Type           = regType;
            data.Domain         = domain;

            browseList.Items.Remove(data);
            browseList.Invalidate();
        }