Я пытаюсь использовать функцию SDLNet_TCP_Send(TCPsocket sock, void *data, int len)
(часть библиотеки SDL_net), и мне сложно определить, как я могу использовать это для отправки int
. Смогу ли я это сделать или использовать другой подход?Преобразование int в void * данные и получение длины в байтах
2
A
ответ
4
«Как я мог бы использовать это, чтобы отправить 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));
2
Учитывая int x;
вы должны быть в состоянии тривиальным вызвать функцию следующим образом:
SDLNet_TCP_Send(socket, &x, sizeof(x));