Advertisement
RaWRCoder

Tcp server

Oct 20th, 2015
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.26 KB | None | 0 0
  1. public sealed class SomeTcpServer : Server
  2. {
  3.     public DbWorker Worker { get; set; }
  4.     public event Action<string> InfoMessage;
  5.     public TcpListener Tcp { get; private set; }
  6.     public IPEndPoint ListeningEndPoint { get; set; } = new IPEndPoint(IPAddress.Any, 1945);
  7.     protected override void BeforeStart()
  8.     {
  9.         Tcp = new TcpListener(ListeningEndPoint);
  10.         Tcp.Start(32);
  11.         PostInfoMessage("Server started");
  12.     }
  13.  
  14.     protected override void BeforeStop()
  15.     {
  16.         Tcp.Stop();
  17.     }
  18.  
  19.     protected override void RunSingleIteration()
  20.     {
  21.         TcpClient client = null;
  22.         try
  23.         {
  24.             client = Tcp.AcceptTcpClient();
  25.         }
  26.         catch (SocketException e)
  27.         {
  28.             if (e.SocketErrorCode != SocketError.Interrupted)
  29.             {
  30.                 PostInfoMessage($"Failed to accept client - {e}");
  31.             }
  32.             ShouldBeRunning = false;
  33.             return;
  34.         }
  35.         ThreadPool.QueueUserWorkItem(state =>
  36.         {
  37.             var t = (Tuple<SomeTcpServer, TcpClient>) state;
  38.             t.Item1.HandleClient(t.Item2);
  39.         }, new Tuple<SomeTcpServer, TcpClient>(this, client));
  40.     }
  41.  
  42.     protected override void AfterCycle()
  43.     {
  44.         Tcp.Stop();
  45.         PostInfoMessage("Server stoped");
  46.     }
  47.  
  48.     private void PostInfoMessage(string obj)
  49.     {
  50.         InfoMessage?.Invoke(obj);
  51.     }
  52.    
  53.     private void HandleClient(TcpClient cli)
  54.     {
  55.         // TODO: Work with a single client
  56.     }
  57.    
  58. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement