Зависает и закрывается клиент-серверное приложение - 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():
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.556 из 5
Похожие ответы