Feedback

C# - Broadcast senden

Veröffentlicht von am 18.06.2007
(1 Bewertungen)
Mit den folgenden Methoden kann man einen Broadcast im lokalen Netzwerk senden. Um mit diesen Methoden arbeiten zu können, müssen folgende Bibliotheken eingebunden werden :

- System.Net
- System.Net.Sockets

Weiterführende Literatur zum Verständnis :

- http://de.wikipedia.org/wiki/Socket
- http://de.wikipedia.org/wiki/Broadcast
GFU-Schulungen  [Anzeige]

VB.NET Einführung

Die Schulung zeigt Ihnen, wie Sie einfache, benutzerorientierte Programme, die auf Datenbanken zugreifen, in VB.NET eigenständig entwickeln. 

Visual Studio Team Foundation Server 2017/2015 (TFS) - Komplett 

namespace Networking.Broadcast
{
public class BroadCast
{
   /// <summary>
        /// Methode, um einen Broadcast im lokalen Netzwerk abzusetzen
        /// </summary>
        /// <param name="data">Daten, welche beim Broadcast mitgesendet werden</param>
        /// <param name="port">Zielport</param>
        public void BroadCastSend(byte[] data, int port)
        {
            this.BroadCastSend(data, IPAddress.Broadcast, port);
        }

        /// <summary>
        /// Methode, um einen Broadcast im lokalen Netzwerk abzusetzen
        /// </summary>
        /// <param name="data">Daten, welche beim Broadcast mitgesendet werden</param>
        /// <param name="ip">Protokollart</param>
        /// <param name="port">Zielport</param>
        public void BroadCastSend(byte[] data, IPAddress ip, int port)
        {
            //Socket definieren
            Socket bcSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
            
            //EndPoint definieren bzw. Ziel des Broadcastes
            IPEndPoint iep1 = new IPEndPoint(ip, port);

            //Optionen auf den Socket binden
            bcSocket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, 0);
            
            //Broadcast senden
            bcSocket.SendTo(data, iep1);

            //Für Debug - Zwecke
            //Console.WriteLine("Broadcast sent : " + ip.ToString() + " : " + port.ToString());

            //Socket schliessen, nach erfolgreichem Senden des Broadcastes
            bcSocket.Close();
        }
}

}

1 Kommentare zum Snippet

Niklas P. schrieb am 05.01.2009:
Beim korrekten Ausführen der Funktion wird eine Ausnahme ausgelöst (Typ: SocketException, Nachricht: Der Zugriff auf einen Socket war aufgrund der Zugriffsrechte des Sockets unzulässig). Dies ist auf das Argument "0" im Funktionsaufruf in der 30. Zeile zurückzuführen.

Lösung: dieses Argument einfach durch "1" ersetzen, damit das Socket Zugriffsrechte erhält.
 

Logge dich ein, um hier zu kommentieren!