2015-04-15 3 views
2

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

ответ

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