Пример #1
0
        protected internal virtual void CreateServer()
        {
            var b = new Mono.Ssdp.Client();
            //var found = b.Browse(string.Format("upnp:{0}", Name));
            var found = b.BrowseAll();

            found.Client.ServiceAdded += HandleServiceAdded;
            found.Start();

            _server = new Mono.Ssdp.Server();
            _server.Announce(string.Format("upnp:{0}", Name), string.Format("uuid:RemoteMonitor-device:{0}", Name), Address.ToString());
        }
Пример #2
0
 public void AnnouncementTest()
 {
     using (var server = new Server(CreateRoot())) {
         using (var client = new Mono.Ssdp.Client()) {
             var announcements = new Dictionary <string, string> ();
             announcements.Add("upnp:rootdevice/uuid:d1::upnp:rootdevice", null);
             announcements.Add("uuid:d1/uuid:d1", null);
             announcements.Add("urn:schemas-upnp-org:device:mono-upnp-tests-device:1/uuid:d1::urn:schemas-upnp-org:device:mono-upnp-tests-device:1", null);
             announcements.Add("uuid:ed1/uuid:ed1", null);
             announcements.Add("urn:schemas-upnp-org:device:mono-upnp-tests-embedded-device:1/uuid:ed1::urn:schemas-upnp-org:device:mono-upnp-tests-embedded-device:1", null);
             announcements.Add("urn:schemas-upnp-org:service:mono-upnp-test-service:1/uuid:d1::urn:schemas-upnp-org:service:mono-upnp-test-service:1", null);
             announcements.Add("urn:schemas-upnp-org:service:mono-upnp-test-service:2/uuid:d1::urn:schemas-upnp-org:service:mono-upnp-test-service:2", null);
             announcements.Add("urn:schemas-upnp-org:service:mono-upnp-test-service:1/uuid:ed1::urn:schemas-upnp-org:service:mono-upnp-test-service:1", null);
             announcements.Add("urn:schemas-upnp-org:service:mono-upnp-test-service:2/uuid:ed1::urn:schemas-upnp-org:service:mono-upnp-test-service:2", null);
             client.ServiceAdded += (obj, args) => {
                 lock (mutex) {
                     Assert.AreEqual(ServiceOperation.Added, args.Operation);
                     var announcement = string.Format("{0}/{1}", args.Service.ServiceType, args.Service.Usn);
                     if (announcements.ContainsKey(announcement))
                     {
                         announcements.Remove(announcement);
                     }
                     if (announcements.Count == 0)
                     {
                         Monitor.Pulse(mutex);
                     }
                 }
             };
             client.BrowseAll();
             lock (mutex) {
                 server.Start();
                 if (!Monitor.Wait(mutex, TimeSpan.FromSeconds(30)))
                 {
                     Assert.Fail("The UPnP server announcement timed out.");
                 }
             }
         }
     }
 }
Пример #3
0
 public void BrowseAll()
 {
     client.BrowseAll();
 }
Пример #4
0
 public void AnnouncementTest ()
 {
     using (var server = new Server (CreateRoot ())) {
         using (var client = new Mono.Ssdp.Client ()) {
             var announcements = new Dictionary<string,string> ();
             announcements.Add ("upnp:rootdevice/uuid:d1::upnp:rootdevice", null);
             announcements.Add ("uuid:d1/uuid:d1", null);
             announcements.Add ("urn:schemas-upnp-org:device:mono-upnp-tests-device:1/uuid:d1::urn:schemas-upnp-org:device:mono-upnp-tests-device:1", null);
             announcements.Add ("uuid:ed1/uuid:ed1", null);
             announcements.Add ("urn:schemas-upnp-org:device:mono-upnp-tests-embedded-device:1/uuid:ed1::urn:schemas-upnp-org:device:mono-upnp-tests-embedded-device:1", null);
             announcements.Add ("urn:schemas-upnp-org:service:mono-upnp-test-service:1/uuid:d1::urn:schemas-upnp-org:service:mono-upnp-test-service:1", null);
             announcements.Add ("urn:schemas-upnp-org:service:mono-upnp-test-service:2/uuid:d1::urn:schemas-upnp-org:service:mono-upnp-test-service:2", null);
             announcements.Add ("urn:schemas-upnp-org:service:mono-upnp-test-service:1/uuid:ed1::urn:schemas-upnp-org:service:mono-upnp-test-service:1", null);
             announcements.Add ("urn:schemas-upnp-org:service:mono-upnp-test-service:2/uuid:ed1::urn:schemas-upnp-org:service:mono-upnp-test-service:2", null);
             client.ServiceAdded += (obj, args) => {
                 lock (mutex) {
                     Assert.AreEqual (ServiceOperation.Added, args.Operation);
                     var announcement = string.Format ("{0}/{1}", args.Service.ServiceType, args.Service.Usn);
                     if (announcements.ContainsKey (announcement)) {
                         announcements.Remove (announcement);
                     }
                     if (announcements.Count == 0) {
                         Monitor.Pulse (mutex);
                     }
                 }
             };
             client.BrowseAll ();
             lock (mutex) {
                 server.Start ();
                 if (!Monitor.Wait (mutex, TimeSpan.FromSeconds (30))) {
                     Assert.Fail ("The UPnP server announcement timed out.");
                 }
             }
         }
     }
 }