Как передавать по сети структуры MYSQL?

Второй час вожусь, не могу понять как отправить структуру MYSQL_RES

Сервер:

MYSQL_RES *result;
mysql_query(conn,"запрос");
result=mysql_store_result(conn);
send(sock,result,sizeof(*result),0);

Клиент:

MYSQL_ROW row;
MYSQL_RES res;
recv(sock,&res,sizeof(res),0);
row=mysql_fetch_row(&res);
//|                      |
//V                      V
printf("row:%s\n",row[0]); //Здесь выводится ошибка сегментирования  

На ошибки проверяю - их нет, что я делаю неправильно?


Ответы (1 шт):

Автор решения: Sergey

Два замечания к Вашему коду.

Первое:

Лучше написать вот так:

send(sock,result,sizeof(MYSQL_RES),0);

По крайней мере, я понимаю однозначно, что здесь получится.

Второе - принципиальное.

Предположим, что "на том конце" Вы получили структуру MYSQL_RES. Правильно даже получили. И что? Разве эта структура содержит данные, полученные с SQL сервера? Нет. Она содержит ссылку на struct MYSQL_DATA * data И зачем вам эта ссылка ?! Она указывает на область памяти того компьютера, который выполнил send(). Как вы из памяти компьютера выполнившего recv() получите доступ к этой памяти ?! Никак...

Поэтому, выход тут только один: доставать с сервера данные а не их описатели и передавать конкретно данные.

→ Ссылка