using System.IO; using System.Net; using System.Net.Sockets; using System.Timers; using System.Windows; namespace LaOlaWelle { /// /// Interaktionslogik für ServerGUI.xaml /// public partial class ServerGUI : Window { IPEndPoint remoteep; UdpClient udpclient; int client = 0; double intervallTime = 0.5; int clientsCnt = 0; Timer timer; bool initialized = false; public ServerGUI() { InitializeComponent(); initialized = true; udpclient = new UdpClient(); IPAddress multicastaddress = IPAddress.Parse("239.0.0.222"); udpclient.JoinMulticastGroup(multicastaddress); remoteep = new IPEndPoint(multicastaddress, 2222); } private void clients_ValueChanged(object sender, RoutedPropertyChangedEventArgs e) { if (!initialized) return; clientsCnt = (int)clients.Value; clientsCNT.Content = clientsCnt; } private void intervall_ValueChanged(object sender, RoutedPropertyChangedEventArgs e) { if (!initialized) return; intervallCNT.Content = intervall.Value; intervallTime = intervall.Value; } private void start_CheckChanged(object sender, RoutedEventArgs e) { if (!initialized) return; if ((bool)start.IsChecked) { timer = new Timer(intervallTime * 1000); timer.Elapsed += Timer_Elapsed; timer.Enabled = true; timer.AutoReset = true; } else { if (timer == null) return; timer.Enabled = false; } } private void Timer_Elapsed(object sender, ElapsedEventArgs e) { if (!initialized) return; var message = new Message(); message.ID = client; message.State = state.close; WriteMessage(message); client++; if (client > clientsCnt) client = 1; message = new Message(); message.ID = client; message.State = state.open; WriteMessage(message); } private void WriteMessage(Message message) { using (var stream = new MemoryStream()) { using (var writer = new BinaryWriter(stream)) { writer.Write(message.Valid); writer.Write(message.ID); writer.Write((int)message.State); writer.Flush(); stream.Position = 0; byte[] data = stream.ToArray(); udpclient.Send(data, data.Length, remoteep); } } } } }