Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Text;
- using System.Net;
- using System.Net.Sockets;
- using System.Diagnostics;
- using System.Security;
- using System.Security.Permissions;
- namespace SocketServer
- {
- class Program
- {
- [SocketPermission(SecurityAction.Assert, Access = "Connect",
- Host = "localhost", Port = "All", Transport = "Tcp")]
- static void Main(string[] args)
- {
- DateTime localDate = DateTime.Now;
- Console.WriteLine("Сервер запущен.");
- // Устанавливаем для сокета локальную конечную точку
- IPHostEntry ipHost = Dns.GetHostEntry("localhost");
- IPAddress ipAddr = ipHost.AddressList[0];
- IPEndPoint ipEndPoint = new IPEndPoint(ipAddr, 11000);
- // Создаем сокет Tcp/Ip
- Socket sListener = new Socket(ipAddr.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
- // Назначаем сокет локальной конечной точке и слушаем входящие сокеты
- try
- {
- sListener.Bind(ipEndPoint);
- sListener.Listen(10);
- // Начинаем слушать соединения
- while (true)
- {
- Console.WriteLine("Ожидаем соединение через порт {0}", ipEndPoint);
- // Программа приостанавливается, ожидая входящее соединение
- Socket handler = sListener.Accept();
- string data = null;
- // Мы дождались клиента, пытающегося с нами соединиться
- byte[] bytes = new byte[1024];
- int bytesRec = handler.Receive(bytes);
- data += Encoding.UTF8.GetString(bytes, 0, bytesRec);
- // Отправляем ответ клиенту
- if (data == "-app")
- {
- Console.Write("Полученный текст: " + data + "\n\n");
- string reply = "Получена команда -app, список доступных приложений:\nMVPComplex: -mvpcomplex\nTables: -tables\nЧтобы завершить работу, введите -exit";
- byte[] msg = Encoding.UTF8.GetBytes(reply);
- handler.Send(msg);
- }
- else if (data == "-mvpcomplex")
- {
- string reply = "Получена команда -mvpcomplex.\nПриложение состоит из калькулятора и Диалоговой системы.\nЧтобы запустить MVPComplex введите команду\n-mvpcomplex -run";
- byte[] msg = Encoding.UTF8.GetBytes(reply);
- handler.Send(msg);
- }
- else if (data == "-mvpcomplex -run")
- {
- try
- {
- Console.Write("Полученный текст: " + data + "\n\n");
- Process myProcess = new Process();
- myProcess.StartInfo.UseShellExecute = false;
- myProcess.StartInfo.FileName = "C:\\MicroserviceApps\\MVPComplex.exe";
- myProcess.StartInfo.CreateNoWindow = true;
- myProcess.Start();
- string reply = "Получена команда -mvpcomplex -run.\nЗапуск MVPComplex.exe.";
- byte[] msg = Encoding.UTF8.GetBytes(reply);
- handler.Send(msg);
- }
- catch
- {
- string reply = "Программы с именем MVPComplex.exe нет в папке с приложениями";
- byte[] msg = Encoding.UTF8.GetBytes(reply);
- handler.Send(msg);
- }
- }
- else if (data == "-tables")
- {
- string reply = "Получена команда -tables.\nС помощью этого приложения можно работать с таблицей.\nЧтобы запустить Tables введите команду\n-tables -run";
- byte[] msg = Encoding.UTF8.GetBytes(reply);
- handler.Send(msg);
- }
- else if (data == "-tables -run")
- {
- try
- {
- Console.Write("Полученный текст: " + data + "\n\n");
- Process myProcess = new Process();
- myProcess.StartInfo.UseShellExecute = false;
- myProcess.StartInfo.FileName = "C:\\MicroserviceApps\\Tables.exe";
- myProcess.StartInfo.CreateNoWindow = true;
- myProcess.Start();
- string reply = "Получена команда -tables -run.\nЗапуск Tables.exe.";
- byte[] msg = Encoding.UTF8.GetBytes(reply);
- handler.Send(msg);
- }
- catch
- {
- string reply = "Программы с именем Tables.exe нет в папке с приложениями";
- byte[] msg = Encoding.UTF8.GetBytes(reply);
- handler.Send(msg);
- }
- }
- else if (data == "-exit")
- {
- Environment.Exit(0);
- }
- else if (data == "-time")
- {
- string reply = Convert.ToString("Текущая дата и время: "+localDate);
- ;
- byte[] msg = Encoding.UTF8.GetBytes(reply);
- handler.Send(msg);
- }
- else
- {
- string reply = "Получена неизвестная команда.";
- byte[] msg = Encoding.UTF8.GetBytes(reply);
- handler.Send(msg);
- }
- if (data.IndexOf("<TheEnd>") > -1)
- {
- Console.WriteLine("Сервер завершил соединение с клиентом.");
- break;
- }
- handler.Shutdown(SocketShutdown.Both);
- handler.Close();
- }
- }
- catch (Exception ex)
- {
- Console.WriteLine(ex.ToString());
- }
- finally
- {
- Console.ReadLine();
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement