Advertisement
Guest User

Untitled

a guest
May 25th, 2016
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 7.33 KB | None | 0 0
  1. using System;
  2. using System.Text;
  3. using System.Net;
  4. using System.Net.Sockets;
  5. using System.Diagnostics;
  6. using System.Security;
  7. using System.Security.Permissions;
  8.  
  9. namespace SocketServer
  10. {
  11.     class Program
  12.     {
  13.         [SocketPermission(SecurityAction.Assert, Access = "Connect",
  14.      Host = "localhost", Port = "All", Transport = "Tcp")]
  15.  
  16.        
  17.         static void Main(string[] args)
  18.         {
  19.  
  20.             DateTime localDate = DateTime.Now;
  21.             Console.WriteLine("Сервер запущен.");
  22.             // Устанавливаем для сокета локальную конечную точку
  23.             IPHostEntry ipHost = Dns.GetHostEntry("localhost");
  24.             IPAddress ipAddr = ipHost.AddressList[0];
  25.             IPEndPoint ipEndPoint = new IPEndPoint(ipAddr, 11000);
  26.  
  27.  
  28.  
  29.             // Создаем сокет Tcp/Ip
  30.  
  31.             Socket sListener = new Socket(ipAddr.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
  32.  
  33.  
  34.             // Назначаем сокет локальной конечной точке и слушаем входящие сокеты
  35.             try
  36.  
  37.             {
  38.  
  39.                 sListener.Bind(ipEndPoint);
  40.                 sListener.Listen(10);
  41.  
  42.                 // Начинаем слушать соединения
  43.                 while (true)
  44.                 {
  45.                     Console.WriteLine("Ожидаем соединение через порт {0}", ipEndPoint);
  46.  
  47.                     // Программа приостанавливается, ожидая входящее соединение
  48.  
  49.                     Socket handler = sListener.Accept();
  50.                     string data = null;
  51.                     // Мы дождались клиента, пытающегося с нами соединиться
  52.  
  53.                     byte[] bytes = new byte[1024];
  54.                     int bytesRec = handler.Receive(bytes);
  55.  
  56.                     data += Encoding.UTF8.GetString(bytes, 0, bytesRec);
  57.  
  58.  
  59.                     // Отправляем ответ клиенту
  60.  
  61.  
  62.                     if (data == "-app")
  63.                     {
  64.                         Console.Write("Полученный текст: " + data + "\n\n");
  65.  
  66.                         string reply = "Получена команда -app, список доступных приложений:\nMVPComplex: -mvpcomplex\nTables: -tables\nЧтобы завершить работу, введите -exit";
  67.                         byte[] msg = Encoding.UTF8.GetBytes(reply);
  68.                         handler.Send(msg);
  69.  
  70.                     }
  71.  
  72.  
  73.                     else if (data == "-mvpcomplex")
  74.                     {
  75.                         string reply = "Получена команда -mvpcomplex.\nПриложение состоит из калькулятора и Диалоговой системы.\nЧтобы запустить MVPComplex введите команду\n-mvpcomplex -run";
  76.                         byte[] msg = Encoding.UTF8.GetBytes(reply);
  77.                         handler.Send(msg);
  78.                     }
  79.                     else if (data == "-mvpcomplex -run")
  80.                     {
  81.                         try
  82.                         {
  83.                             Console.Write("Полученный текст: " + data + "\n\n");
  84.                             Process myProcess = new Process();
  85.                             myProcess.StartInfo.UseShellExecute = false;
  86.                             myProcess.StartInfo.FileName = "C:\\MicroserviceApps\\MVPComplex.exe";
  87.                             myProcess.StartInfo.CreateNoWindow = true;
  88.                             myProcess.Start();
  89.                             string reply = "Получена команда -mvpcomplex -run.\nЗапуск MVPComplex.exe.";
  90.                             byte[] msg = Encoding.UTF8.GetBytes(reply);
  91.                             handler.Send(msg);
  92.                         }
  93.                         catch
  94.                         {
  95.                             string reply = "Программы с именем MVPComplex.exe нет в папке с приложениями";
  96.                             byte[] msg = Encoding.UTF8.GetBytes(reply);
  97.                             handler.Send(msg);
  98.  
  99.                         }
  100.                     }
  101.  
  102.                     else if (data == "-tables")
  103.                     {
  104.  
  105.                         string reply = "Получена команда -tables.\nС помощью этого приложения можно работать с таблицей.\nЧтобы запустить Tables введите команду\n-tables -run";
  106.                         byte[] msg = Encoding.UTF8.GetBytes(reply);
  107.                         handler.Send(msg);
  108.                     }
  109.                     else if (data == "-tables -run")
  110.                     {
  111.                         try
  112.                         {
  113.                             Console.Write("Полученный текст: " + data + "\n\n");
  114.                             Process myProcess = new Process();
  115.                             myProcess.StartInfo.UseShellExecute = false;
  116.                             myProcess.StartInfo.FileName = "C:\\MicroserviceApps\\Tables.exe";
  117.                             myProcess.StartInfo.CreateNoWindow = true;
  118.                             myProcess.Start();
  119.                             string reply = "Получена команда -tables -run.\nЗапуск Tables.exe.";
  120.                             byte[] msg = Encoding.UTF8.GetBytes(reply);
  121.                             handler.Send(msg);
  122.                         }
  123.                         catch
  124.                         {
  125.                             string reply = "Программы с именем Tables.exe нет в папке с приложениями";
  126.                             byte[] msg = Encoding.UTF8.GetBytes(reply);
  127.                             handler.Send(msg);
  128.  
  129.                         }
  130.  
  131.                     }
  132.  
  133.                     else if (data == "-exit")
  134.                     {
  135.                         Environment.Exit(0);
  136.                     }
  137.  
  138.                     else if (data == "-time")
  139.                     {
  140.                         string reply = Convert.ToString("Текущая дата и время: "+localDate);
  141.                             ;
  142.                         byte[] msg = Encoding.UTF8.GetBytes(reply);
  143.  
  144.                         handler.Send(msg);
  145.                     }
  146.                     else
  147.                     {
  148.                         string reply = "Получена неизвестная команда.";
  149.                         byte[] msg = Encoding.UTF8.GetBytes(reply);
  150.                         handler.Send(msg);
  151.                     }
  152.  
  153.                     if (data.IndexOf("<TheEnd>") > -1)
  154.                     {
  155.                         Console.WriteLine("Сервер завершил соединение с клиентом.");
  156.                         break;
  157.                     }
  158.  
  159.  
  160.                     handler.Shutdown(SocketShutdown.Both);
  161.                     handler.Close();
  162.                 }
  163.             }
  164.             catch (Exception ex)
  165.             {
  166.                 Console.WriteLine(ex.ToString());
  167.             }
  168.             finally
  169.             {
  170.                 Console.ReadLine();
  171.             }
  172.         }
  173.        
  174.  
  175.     }
  176. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement