В университете изучаем сетевое программирование на языке С++. Задали лабораторную, с ней возникли проблемы. Програма-сервер формирует матрицу целых случайных чисел, програма-клиент получает матрицу и выводит её.
Первый вариант решения был такой.
Код сервера:
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 5; j++)
{
string buf = to_string(rand() % 100);
const char* msg = buf.c_str();
send(newConnection, msg, sizeof(msg), NULL);
cout << msg << endl;
}
}
Код клиента:
char msg[256];
int iRez;
do {
iRez = recv(Connection, msg, sizeof(msg), NULL);
cout << msg << endl;
} while (iRez > 0);
Здесь проблема в том, что некоторые числа теряются.
Скриншот с результатами работы
Пока писал вопрос не так много стало теряться, но перед этим больше половины не было.
Есть и второй вариант решения. В нём я пакую все числа и разделители( \t и \n) в одну строку о отправляю.
Код сервера:
string msg="";
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 5; j++)
{
msg = msg + to_string(rand() % 100) + "\t";
}
msg += "\n";
}
const char* c_msg = msg.c_str();
cout << c_msg << endl;
send(newConnection, c_msg, sizeof(c_msg), NULL);
Код клиента:
recv(Connection, msg, sizeof(msg), NULL);
cout << msg;
Результат такой:
Скриншотт с результатами работы
Как правильно передать/получить матрицу? Если есть внятная литература или сайты по теме буду благодарен.