Зависает и закрывается клиент-серверное приложение - C#
Формулировка задачи:
С клиента на сервер отправляется запрос. Запрос отправляется несколько раз в секунду. Сервер выполнив несколько раз запрос закрывается. Полностью закрывается приложение сервера. Но несколько раз выполняет запрос. Бывает даже раз 5 успевает выполнить.
Вот проблемный код на сервере:
Первый фрагмент находящийся в операторe switch
Второй фрагмент:
Листинг программы
- case "ZaprosCoordinat":
- ZaprosCoordinat(pak[1]);//передаем в метод ID персонажа
- string [] sCoor = new string [3];
- sCoor[0] = tmpX.ToString();
- sCoor[1] = tmpZ.ToString();
- sCoor[2] = tmpY.ToString();
- SendData("sCoor", sCoor);//отправка пакета клиенту
- break;
Листинг программы
- private void ZaprosCoordinat(string charID)
- {
- charIDD = Convert.ToInt32(charID);
- string Connect = "Database=" + database + ";Datasource=" + host + ";User=" + user + ";Password=" + passwordSQL;//информация для подключения к БД
- MySqlConnection mysql_connection = new MySqlConnection(Connect); //создаем подключение к БД
- MySqlCommand mysql_query = mysql_connection.CreateCommand();//создаем объект MySqlCommand с именем mysql_query используя текущее подключение
- mysql_query.CommandText = "SELECT x, z, y FROM characters WHERE `charID` = '" + charID + "';";//создаем SQL запрос который будет храниться в mysql_query
- mysql_connection.Open();//для подключение и соединения с базой данных нужно вызвать метод .Open():
- MySqlDataReader mysql_result = mysql_query.ExecuteReader();//выполняет запрос и возвращает 0 и более строк результата.
- while (mysql_result.Read())//Метод Read() – переходит от одной строки к другой пока конец данных не будет достигнут.
- {
- // Каждое значение вытягиваем с помощью MySqlDataReader.GetValue(<номер значения в выборке>)
- string str = (mysql_result.GetValue(0).ToString() + "|" + mysql_result.GetValue(1) + "|" + mysql_result.GetValue(2));//Метод GetValue(0) извлекает конкретное значение, которое нужно вернуть.
- var pak = str.Split('|');//из строки создаем массив
- tmpX = Convert.ToInt32(pak[0]);
- tmpZ = Convert.ToInt32(pak[1]);
- tmpY = Convert.ToInt32(pak[2]);
- }
- //Выгружаем ресурсы, закрываем соединение:
- mysql_result.Close();//закрываем
- mysql_query.Dispose();//освобождаем ресурсы
- mysql_connection.Close();//когда выполнился запрос, обязательно нужно закрыть соединение с базой данных
- }
Нет ошибка где то в етом коде а не в примведенном выше
Листинг программы
- if(flag)
- {
- timer += Time.deltaTime;
- if(timer >= 3f)
- {
- timer = 0f;
- int x = Convert.ToInt32(currentPlayerPosition.x);
- int z = Convert.ToInt32(currentPlayerPosition.z);
- int y = Convert.ToInt32(currentPlayerPosition.y);
- int cRx = Convert.ToInt32(currentPlayerRotation.x);
- int cRy = Convert.ToInt32(currentPlayerRotation.y);
- int cRz = Convert.ToInt32(currentPlayerRotation.z);
- int cRw = Convert.ToInt32(currentPlayerRotation.w);
- string[] g1 = {x.ToString(), z.ToString(), y.ToString(), cRx.ToString (), cRy.ToString (), cRz.ToString (), cRw.ToString ()};
- _net.SendCurrentPosition(g1);
- }
- }
- if(flag2)
- {
- timer2 += Time.deltaTime;
- if(timer2 >= 3f)
- {
- timer2 = 0f;
- _net.ZaprosPlayersInRadius(radiusObzora);
- }
- }
Решение задачи: «Зависает и закрывается клиент-серверное приложение»
textual
Листинг программы
- MySqlConnection mysql_connection;
- void OnStart()
- {
- string Connect = "Database=" + database + ";Datasource=" + host + ";User=" + user + ";Password=" + passwordSQL;//информация для подключения к БД
- MySqlConnection mysql_connection = new MySqlConnection(Connect); //создаем подключение к БД
- mysql_connection.Open();//для подключение и соединения с базой данных нужно вызвать метод .Open():
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д