将 int 转换为 void *data 并获取以字节为单位的长度
Converting an int to void *data and getting the length in bytes
我正在尝试使用 SDLNet_TCP_Send(TCPsocket sock, void *data, int len)
函数(SDL_net 库的一部分),但我很难弄清楚如何使用它来发送 int
.我可以这样做还是应该使用其他方法?
"how I could use this to send an int ... Would I be able to do that or should I use another approach?"
可以使用函数来做到这一点。您只需使用地址和 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));
鉴于 int x;
你应该能够像这样简单地调用函数:
SDLNet_TCP_Send(socket, &x, sizeof(x));
我正在尝试使用 SDLNet_TCP_Send(TCPsocket sock, void *data, int len)
函数(SDL_net 库的一部分),但我很难弄清楚如何使用它来发送 int
.我可以这样做还是应该使用其他方法?
"how I could use this to send an int ... Would I be able to do that or should I use another approach?"
可以使用函数来做到这一点。您只需使用地址和 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));
鉴于 int x;
你应该能够像这样简单地调用函数:
SDLNet_TCP_Send(socket, &x, sizeof(x));