Преобразование данных типа int в void * и получение длины в байтах

Я пытаюсь использовать SDLNet_TCP_Send(TCPsocket sock, void *data, int len) функция (часть библиотеки SDL_net), и мне трудно понять, как я могу использовать это, чтобы отправить int, Смогу ли я сделать это или я должен использовать другой подход?

2

Решение

«Как я мог использовать это, чтобы послать int … Смогу ли я сделать это или я должен использовать другой подход?»

Функция может быть использована для этого. Вы просто используете адрес и sizeof():

int dataToSend = 42;
SDLNet_TCP_Send(sock, &dataToSend, sizeof(dataToSend));

В зависимости от протокола данных вам может потребоваться подчиниться тому, чтобы целочисленные данные отправлялись в сетевом байтовом порядке (чтобы это зависело от архитектуры машины):

#include <arpa/inet.h>

int dataToSend = htonl(42);
// ^^^^^ Make integer network byte ordered (big endian)
SDLNet_TCP_Send(sock, &dataToSend, sizeof(dataToSend));
4

Другие решения

Дано int x; Вы должны быть в состоянии тривиально вызвать функцию следующим образом:

SDLNet_TCP_Send(socket, &x, sizeof(x));
2

По вопросам рекламы [email protected]