Send og modtage besked på lokalnetværket
Jeg har lavet en lille simpel klasse til at afsende og modtage beskeder på det lokale netværk. Det virker dog ikke. Den sender muligvis (ved ikke hvordan jeg kan være helt sikker) men den modtager i hvert fald ikke noget. Den er blokeret i lytte-funktionen - og kommer aldrig videre.public class Communicate {
private IPAddress groupAddress = IPAddress.Parse("255.255.255.255");
private int groupPort = 1515;
private bool done = false;
private Form1 owner;
private Thread listenerThread;
public Communicate(Form1 owner) {
init();
this.owner = owner;
}
public Communicate(String ip, int port) {
groupAddress = IPAddress.Parse(ip);
groupPort = port;
init();
}
public void init(){
ThreadStart ts = new ThreadStart(listen);
listenerThread = new Thread(ts);
listenerThread.Start();
}
public void shutdown() {
done = true;
listenerThread.Abort();
}
private void listen() {
UdpClient listener = new UdpClient();
IPEndPoint groupEP = new IPEndPoint(groupAddress,groupPort);
try {
listener.JoinMulticastGroup(groupAddress);
listener.Connect(groupEP);
while (!done) {
Console.WriteLine("Waiting for broadcast");
byte[] bytes = listener.Receive(ref groupEP);
Console.WriteLine("Besked modtaget");
Console.WriteLine("Received broadcast from {0} :\n {1}\n",
groupEP.ToString(),
Encoding.ASCII.GetString(bytes,0,bytes.Length));
onMessageReceived(groupEP.ToString(),
Encoding.ASCII.GetString(bytes,0,bytes.Length));
}
listener.Close();
} catch (Exception e) {
Console.WriteLine(e.ToString()+": "+e.Message);
}
}
public void broadcast(String[] message) {
UdpClient sender = new UdpClient();
IPEndPoint groupEP = new IPEndPoint(groupAddress,groupPort);
try {
for (int i = 0; i < message.Length; i++) {
Console.WriteLine("Sending datagram : {0}", message[i]);
byte[] bytes = Encoding.ASCII.GetBytes(message[i]);
sender.Send(bytes, bytes.Length, groupEP);
}
sender.Close();
} catch (Exception e) {
Console.WriteLine(e.ToString());
}
}
}
Jeg har nogle gæt på hvad fejlen kan være:
- Det er ikke rigtigt at jeg burde modtage en besked som jeg sender til 255.255.255.255
- Porten skal være noget bestemt jeg ikke ved.
- Der er en eller anden åbenlys dummefejl som jeg har stirret mig blind på.
Har du foreslag til hvad der kan være galt?
