Temat: Przesyłanie wiadomości od serwera do klienta - struct PGresult
Moje pytanie dotyczy przesyłania wiadomości z serwera do klienta. Korzystam z funkcji send(...) w aplikacji serwera.
int send(
__in SOCKET s,
__in const char *buf,
__in int len,
__in int flags
);
Funkcja send(...) wysyła do klienta odpowiedź na zapytanie do bazy danych. Bazę mam w PostgreSQL. Do obsługi bazy wykorzystuje funkcje z biblioteki libpq.lib.
Funkcja PQexec(...) wysyła zapytanie do bazy.
PGresult *PQexec(
PGconn *conn,
const char *command
);
Funkcja ta generuje odpowiedź z bazy w postaci struktury PQresult. W związku z tym chciałbym przesłać tą strukturę z serwera do klienta.
Znalazłem podobny wątek na innym forum, w którym ktoś sugerował, żeby: "skonwertować strukture jako zwykly wskaznik, i wysłać dane, a jako rozmiar struktury uzyć operatora sizeof(struct struktura)". Jednak kiedy piszę:
(...)
PGconn* conn = PQconnectdb("user=postgres password=pass dbname=mydb hostaddr=127.0.0.1 port=5432");;
string query;
PGresult* result = PQexec(conn, query.c_str());
char* buffer = reinterpret_cast<char*>(result);
send(clientSocket, buffer, sizeof(PGresult), 0);
kompilator protestuje wskazując że PGresult jest typem niezdefiniowanym. Faktycznie załączona biblioteka libpq-fe.h nie definiuje tego typu.
Prosze o jakieś sugestie dotyczące sposobu przesłania wyniku zapytania do bazy z aplikacji serwera do aplikacji klienta. Jak to wysłać i jak odebrać po stronie klienta?
Funkcja odbierająca komunkiaty po stronie klienta.
int recv(
__in SOCKET s,
__out char *buf,
__in int len,
__in int flags
);