vg4->nw->xdata_send()
Send exchange-data to network-server.
SYNTAX
VG_BOOL
vg4->nw->xdata_send(const char *ex_data, size_t ex_size)
FUNCTION PARAMETERS
ex_data | Exchange-data |
ex_size | Number of bytes in ex_data, must not exceed 16777215 |
RETURN VALUE
Returns boolean:
- VG_TRUE: OK
- VG_FALSE: Got exit-request (or network-error occurred)
DESCRIPTION
Send exchange-data to network-server.
The function blocks until all data has been sent.
More than 16777215 bytes cannot be sent.
Exchange-data is normally used before the game-loop to inform the other clients
of certain user-selections, e.g. the user-avatar or a selected race track ...
EXAMPLE
int master_clnr = 1; /* master client-number */ char *ex_data; size_t ex_size; int ex_clnr; if (vg4->nw->local_clnr() == master_clnr) ) { /* the master selects the race track */ char racetrack[32]; snprintf(racetrack, sizeof(racetrack), "Forest Track 5"); /* now send racetrack-information to other clients including me */ if (!vg4->nw->xdata_send(racetrack, strlen(racetrack) + 1)) { VG_dest(); exit(0); } } /* show info */ { struct VG_Image *img; char btxt[64]; snprintf(btxt, sizeof(btxt), "Receiving data ..."); img = vg4->font->totext(btxt, NULL, NULL, NULL, NULL); vg4->window->clear(); vg4->window->copy(img, NULL, NULL); vg4->window->flush(); vg4->image->destroy(img); } /* all clients including master receive the racetrack-information */ for (;;) { if (!vg4->nw->xdata_recv(&ex_data, &ex_size, &ex_clnr)) { VG_dest(); exit(0); } if (ex_size > 0) { /* just output received data to stdout */ printf("Client %d selected: %s\n", ex_clnr, ex_data); free(ex_data); break; } /* still no data received, wait and try again */ if (!vg4->nw->is_connected(master_clnr)) { VG_dest(); exit(0); } /* master disconnected */ vg4->window->flush(); vg4->misc->wait_time(100); }
SEE ALSO