Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Windows;
- using System.Net.Sockets;
- using System.Net;
- using System.Threading;
- using System.Timers;
- namespace BfmeServer
- {
- /// <summary>
- /// Interaction logic for MainWindow.xaml
- /// </summary>
- public partial class MainWindow : Window
- {
- TcpListener server;
- bool running = false;
- Thread thread;
- string log;
- System.Timers.Timer timer;
- Object mutex = new Object();
- Object mutex2 = new Object();
- bool GetRunning()
- {
- lock(mutex)
- {
- return running;
- }
- }
- void SetRunning(bool b)
- {
- lock (mutex)
- {
- running = b;
- }
- }
- string GetLog()
- {
- lock (mutex2)
- {
- return log;
- }
- }
- public MainWindow()
- {
- InitializeComponent();
- timer = new System.Timers.Timer(1000);
- timer.Elapsed += new ElapsedEventHandler(OnTimedEvent);
- timer.AutoReset = true;
- timer.Start();
- }
- void LogLine(string msg,ref string log)
- {
- lock(mutex2)
- {
- log += msg;
- log += "\n";
- }
- }
- void RunServer()
- {
- LogLine("Running Server!",ref log);
- Int32 port = 80;
- IPAddress localAddr = IPAddress.Parse("127.0.0.1");
- server = new TcpListener(localAddr, port);
- server.Start();
- Byte[] bytes = new Byte[256];
- while (GetRunning())
- {
- LogLine("Waiting for a connection... ",ref log);
- TcpClient client = server.AcceptTcpClient();
- LogLine("Connected!",ref log);
- NetworkStream stream = client.GetStream();
- client.Close();
- }
- LogLine("Shutdown Server!",ref log);
- server.Stop();
- }
- private void but_start_Click(object sender, RoutedEventArgs e)
- {
- but_start.IsEnabled = false;
- but_stop.IsEnabled = true;
- SetRunning(true);
- thread = new Thread(RunServer);
- thread.Start();
- }
- private void but_stop_Click(object sender, RoutedEventArgs e)
- {
- but_start.IsEnabled = true;
- but_stop.IsEnabled = false;
- SetRunning(false);
- thread.Join();
- }
- private void OnTimedEvent(object source, ElapsedEventArgs e)
- {
- textBox.Text = log;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement