Laden...

Upnp / Socket

Erstellt von unconnected vor 14 Jahren Letzter Beitrag vor 14 Jahren 2.004 Views
unconnected Themenstarter:in
849 Beiträge seit 2006
vor 14 Jahren
Upnp / Socket

Hallo,

ich habe ein Problem mit dem Empfang eines UPNP / SSDP Packetes.


IPEndPoint endPoint = new IPEndPoint(IPAddress.Broadcast, 1900);
            

            Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
            s.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, 1);
            s.Connect(endPoint);
            int length = 0;
            byte[] buffer = new byte[10000];
            while (true)
            {
                 
                   length = s.Receive(buffer);

                    string resp = Encoding.ASCII.GetString(buffer, 0, length).ToLower();

                    string sendedString = Encoding.Default.GetString(buffer);

                Debug.WriteLine(sendedString);
                
            }

Das Problem ist, es kommt nichts an. Firewall habe ich schon ausgeschlossen. Und wireshark sagt auch das das Packet ankommt. Vielleicht ist das Problem das das Packet als Ziel 239.255.255.250 was != meiner Ip ist. Ist wohl eine Broadcast adresse. Würde mich über jeden Hinweis freuen

Grüße

Jan

925 Beiträge seit 2004
vor 14 Jahren

Laut http://de.wikipedia.org/wiki/Simple_Service_Discovery_Protocol ist die angegebene IP Adresse die Multicast-Adresse dieses Services. Bin mir gerade nicht sicher, muss man einem Lauscher explizit mitteilen, dass er Multicast-Pakete empfangen soll?

Schau dich mal beim Thema Multicast um! Da wirst du, denke ich, fündig.

unconnected Themenstarter:in
849 Beiträge seit 2006
vor 14 Jahren

Werde dem nachgehen und Berichten 😃 Danke!

C
401 Beiträge seit 2007
vor 14 Jahren

Bin mir gerade nicht sicher, muss man einem Lauscher explizit mitteilen, dass er Multicast-Pakete empfangen soll?

Ja, du musst der Multicast Gruppe beitreten, bevor du die Daten empfangen kannst, ansonsten wäre es ja ein normaler Broadcast 😉.

Hier sollte eigentlich alle stehen, was du wissen musst:

http://www.codeproject.com/KB/IP/multicast.aspx

Gruß

Dario

unconnected Themenstarter:in
849 Beiträge seit 2006
vor 14 Jahren

Danke Leute,

7.e.q hat mich schon auf die richtige fährte geschickt, und Corpsegrinder hat mir dann auch noch die Lösung frei Haus geliefert.

So läufts:



Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
            s.Bind(new IPEndPoint(IPAddress.Any,1900));
            s.SetSocketOption(SocketOptionLevel.IP,SocketOptionName.AddMembership, new MulticastOption(IPAddress.Parse("239.255.255.250"),IPAddress.Any));
            
            int length = 0;
            byte[] buffer = new byte[10000];
            while (true)
            {
                 
                   length = s.Receive(buffer);

                    string resp = Encoding.ASCII.GetString(buffer, 0, length).ToLower();

                    string sendedString = Encoding.Default.GetString(buffer);

                Debug.WriteLine(sendedString);
                
            }