Ich möchte einen Broadcast mit folgendem Code senden, um alle Computer im LAN zu erkennen, die ein bestimmtes Programm ausführen:
void SendBroadcast()
{
TcpClient client = new TcpClient(System.Net.IPAddress.Broadcast.ToString(), 9876);
client.GetStream();
}
Ich bekomme aber bei der Initialisierung des TcpClients eine Exception, die sagt, die Adresse 255.255.255.255 sei im aktuellen Kontext ungültig. Firewall ist natürlich offen, hab es auch mit anderen Ports versucht, aber mit anderen IP-Adressen funktioniert es.
Mit freundlichen Grüßen,
Dawamaha
Ein Broadcast sendest du auch nicht an 255.255.255.255 sondern an dein Netz und die Adresse 255
z.b. 192.168.0.255
Dann liegt es an der Netzwerkkonfiguration.
Um welche Netzwerkklasse geht es? Broadcast und Multicast sind bei TCP ähm eingeschänkt.
Was meinst du mit Netzwerkklasse? Normalerweise Ethernet,aber in diesem Testfall WLAN Ad-Hoc. Kann es vielleicht daran liegen?
Netzwerkklasse: A, B, C, D.
Broadcast wie?
edit: Vielleicht wäre UDP für deine Zwecke besser geeignet?
Stinknormales Klasse C-LAN. Aber ist doch eigentlich unerheblich, weil es doch garnicht um das Internet geht, oder? Wie gesagt: 192.168.137.0, später dann 192.168.2.0 . Es soll einfach ein Broadcast mit 6 Bytes werden, das an alle PCs im LAN geschickt wird.
P.S. Es soll schon TCP sein, weil ich nachher auch ganze Dateien versenden möchte.
Ich bekomme aber bei der Initialisierung des TcpClients eine Exception, die sagt, die Adresse 255.255.255.255 sei im aktuellen Kontext ungültig.
Was auch ziemlich einleuchtend ist, bedenkt man das du versuchst mit TCP eine Broadcastadresse anzusprechen. 🤔
Ich vermute dir ist das Prinzip eines Broadcastes gänzlich unbekannt.
Ich empfehle dir erstmal die theoretischen Grundlagen zu lernen.
Außerdem wäre es ratsam TCP zu verstehen, TCP ist eine Punkt-zu-Punkt Verbindung, also immer ein Unicast!
Guckst du hier:
http://www.codeplanet.eu/tutorials/csharp/4-tcp-ip-socket-programmierung-in-csharp.html?start=3
“Ene mene mu und raus bist Du!”
Achso, OK. Leuchtet auch ein. Eine andere Möglichkeit gibt es aber nicht, oder? Dann muss ich die PCs manuell suchen. Trotzdem vielen Dank für eure Hilfe!
Da ich absolut keine Ahnung habe was du vorhast, kann ich dir auch keinen vernünftigen Ratschlag geben.
Du kannst allerdings mit UDP einen Broadcast im Netz realisieren und dir von den beteiligten Rechnern auf diese Weise die Adresse für eine anschließende TCP-Verbindung zusenden lassen.
Das sind aber anwendungsspezifische Protokollfragen und abhängig davon wie deine Netzwerkteilnehmer miteinander kommunizieren.
“Ene mene mu und raus bist Du!”