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