Серверный движок - C#
Формулировка задачи:
привет у меня такой вопрос, делаю игру и пишу собственный серверный движок. подскажите в правильном ли я направлении двигаюсь? подойдет ли данный подход для написания своих серверов (чат, авторизация, игровой сервер)?
вот пример кода сервера авторизации который я набросал
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net; using System.Net.Sockets; namespace autorization { class Program { static string log = null; static string pas = null; static void Main(string[] args) { start_server(); } static void start_server() { // Устанавливаем для сокета локальную конечную точку IPEndPoint ipPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 8005); // Создаем сокет Tcp/Ip Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); // Назначаем сокет локальной конечной точке и слушаем входящие сокеты try { server.Bind(ipPoint); server.Listen(10); Console.WriteLine("Сервер запущен."); // Начинаем слушать соединения while (true) { Console.WriteLine("Ожидаем соединение через порт {0}", ipPoint); // Программа приостанавливается, ожидая входящее соединение Socket client = server.Accept(); // Мы дождались клиента, пытающегося с нами соединиться byte[] receive = new byte[1024]; for (int i = 0; i < receive.Length; i++) { receive[i] = 0; } client.Receive(receive); string message = Encoding.UTF8.GetString(receive); //Указываем на конец строки с нужными данными int count = message.IndexOf(";;;5"); if (count == -1) { continue; } //Создаем переменную, в которой будет храниться очищенное сообщение string clear_message = ""; for (int i = 0; i < count; i++) { clear_message += message[i]; } //Начинаем делить очищенное сообщение на отдельные части string[] split = clear_message.Split(':'); log = split[0]; pas = split[1]; Console.WriteLine("Подключение клиента: " + "Логин: " + log + " Пароль: " + pas); if (log == "admin" && pas == "1234") { Console.WriteLine("Данные успешно подтверждены."); // Отправляем ответ клиенту string msg = "yes" + ";;;5"; byte[] send = new byte[1024]; send = Encoding.UTF8.GetBytes(msg); client.Send(send); } else { Console.WriteLine("Указанные Логин или Пароль не найдены в Базе Данных."); // Отправляем ответ клиенту string msg = "no" + ";;;5"; byte[] send = new byte[1024]; send = Encoding.UTF8.GetBytes(msg); client.Send(send); } Console.WriteLine("Сервер завершил соединение с клиентом."); client.Shutdown(SocketShutdown.Both); client.Close(); } } catch (Exception ex) { Console.WriteLine(ex.ToString()); } } } }
Решение задачи: «Серверный движок»
textual
Листинг программы
string msg = "yes" + ";;;5"; byte[] send = new byte[1024]; send = Encoding.UTF8.GetBytes(msg); client.Send(send);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д