Прошёлся отладчиком по клиенту. Выяснил, что клиент принимает пустую строку, хотя сервером эти данные не отправляются. P.s. Последняя строка в клиенте. Она показывает пустую строку
Клиент:| Код | void Transport_system::add_transport_system() { char buf[5]; system("cls"); set_name(); set_amount_of_centers(); set_matrix(); name[strlen(name)] = '\0'; send(socket, name, strlen(name) + 1, 0); do recv(socket, buf, sizeof(buf), 0);//принимаем данные, что такого файла не существует while (!(buf[0] == '1' || buf[0] == '0')); if (atoi(buf) == 1)//если не существует { int N = atoi(amountOfCenters); string matrix_string[100][100]; char buf2[10]; for (int i = 0; i < atoi(amountOfCenters); i++) for (int j = 0; j < atoi(amountOfCenters); j++) { _itoa_s(matrix[i][j], buf2, 10, 10);//отправляем матрицу matrix_string[i][j] = string(buf2); } amountOfCenters[strlen(amountOfCenters)] + '\0'; send(socket, amountOfCenters, strlen(amountOfCenters) + 1, 0);//отправляем количество лог-центров for (int i = 0; i < atoi(amountOfCenters); i++) for (int j = 0; j < atoi(amountOfCenters); j++) send(socket, matrix_string[i][j].c_str(), matrix_string[i][j].size(), 0); recv(socket, buf2, strlen(buf2), 0);//принимаем что всё ОК if (atoi(buf2) == 1) cout << "\n\tДанные успешно занесены"; else cout << "Ошибка записи данных"; } if (atoi(buf) == 0)//если существует cout << "Такая транспортная сеть уже существует\n"; _getch(); fflush(stdin); fflush(stdout); fflush(stderr); recv(socket, buf, strlen(buf), 0); //здесь принимает неизвестно что } |
Сервер:| Код | void Transport_system::add_transport_system() { char buf[30]; int value = 0; recv(s, buf, strlen(buf), 0); //1 strcpy_s(name, strlen(buf) + 1, buf); strcpy_s(file_name, strlen(name) + 1, name); strcat_s(file_name, 34, ".txt"); if (_access(file_name, 0)!=-1) { send_number(0); throw ("Транспортная сеть существует"); } else { send_number(1); recv(s, buf, strlen(buf) + 1, 0); //принимаем размер матрицы value = atoi(buf);//кол-во центров for (int i = 0; i < value; i++) for (int j = 0; j < value; j++) capacity[i][j] = recv_number(); } ofstream f(file_name, ios_base::app); f << value << "\n"; for (int i = 0; i < value; i++) { for (int j = 0; j < value; j++) f << capacity[i][j] << " "; f << "\n"; } f.close(); send(s, "1\0", 2, 0); } |
|