1

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
);

2

Odp: Przesyłanie wiadomości od serwera do klienta - struct PGresult

* The contents of this struct are not supposed to be known to applications.

Ostatnio edytowany przez gszpetkowski (2011-06-09 14:42:55)

3

Odp: Przesyłanie wiadomości od serwera do klienta - struct PGresult

PGresult* PQexec(PGconn* connection, char* query);

Ostatnio edytowany przez tata tasiemkaliga (2011-06-15 23:53:28)