Зависает и закрывается клиент-серверное приложение - 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(): }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д