Advertisement
Guest User

Untitled

a guest
Mar 27th, 2015
193
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.09 KB | None | 0 0
  1. using System;
  2. using System.Windows;
  3. using System.Net.Sockets;
  4. using System.Net;
  5. using System.Threading;
  6. using System.Timers;
  7.  
  8. namespace BfmeServer
  9. {
  10.     /// <summary>
  11.     /// Interaction logic for MainWindow.xaml
  12.     /// </summary>
  13.     public partial class MainWindow : Window
  14.     {
  15.    
  16.         TcpListener server;
  17.         bool running = false;
  18.         Thread thread;
  19.         string log;
  20.         System.Timers.Timer timer;
  21.         Object mutex = new Object();
  22.         Object mutex2 = new Object();
  23.         bool GetRunning()
  24.         {
  25.             lock(mutex)
  26.             {
  27.                 return running;
  28.             }      
  29.         }
  30.  
  31.         void SetRunning(bool b)
  32.         {
  33.             lock (mutex)
  34.             {
  35.                 running = b;
  36.             }
  37.         }
  38.  
  39.         string GetLog()
  40.         {
  41.             lock (mutex2)
  42.             {
  43.                 return log;
  44.             }
  45.         }
  46.  
  47.         public MainWindow()
  48.         {
  49.             InitializeComponent();
  50.             timer = new System.Timers.Timer(1000);
  51.        
  52.             timer.Elapsed += new ElapsedEventHandler(OnTimedEvent);
  53.             timer.AutoReset = true;
  54.             timer.Start();
  55.         }
  56.  
  57.         void LogLine(string msg,ref string log)
  58.         {
  59.             lock(mutex2)
  60.             {
  61.                 log += msg;
  62.                 log += "\n";
  63.             }
  64.         }
  65.  
  66.         void RunServer()
  67.         {
  68.             LogLine("Running Server!",ref log);
  69.             Int32 port = 80;
  70.             IPAddress localAddr = IPAddress.Parse("127.0.0.1");
  71.  
  72.             server = new TcpListener(localAddr, port);
  73.  
  74.             server.Start();
  75.  
  76.             Byte[] bytes = new Byte[256];
  77.  
  78.             while (GetRunning())
  79.             {
  80.                 LogLine("Waiting for a connection... ",ref log);
  81.  
  82.                 TcpClient client = server.AcceptTcpClient();
  83.                 LogLine("Connected!",ref log);
  84.  
  85.                 NetworkStream stream = client.GetStream();
  86.  
  87.                 client.Close();
  88.             }
  89.  
  90.             LogLine("Shutdown Server!",ref log);
  91.             server.Stop();
  92.         }
  93.  
  94.  
  95.         private void but_start_Click(object sender, RoutedEventArgs e)
  96.         {  
  97.             but_start.IsEnabled = false;
  98.             but_stop.IsEnabled = true;
  99.             SetRunning(true);
  100.             thread = new Thread(RunServer);
  101.             thread.Start();
  102.         }
  103.  
  104.         private void but_stop_Click(object sender, RoutedEventArgs e)
  105.         {
  106.             but_start.IsEnabled = true;
  107.             but_stop.IsEnabled = false;
  108.             SetRunning(false);
  109.             thread.Join();
  110.         }
  111.  
  112.         private void OnTimedEvent(object source, ElapsedEventArgs e)
  113.         {
  114.             textBox.Text = log;        
  115.         }
  116.     }
  117. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement