如何通过Windows套接字发送int(不使用第三方库)发送: 它需要(const char *)作为参数。
我的尝试是像这样发送int:
unsigned char * serialize_int(unsigned char *buffer, int value)
{
/* Write big-endian int value into buffer; assumes 32-bit int and 8-bit char. */
buffer[0] = value >> 24;
buffer[1] = value >> 16;
buffer[2] = value >> 8;
buffer[3] = value;
return buffer + 4;
}
但Send()想要(const char *)。我被卡住了......
答案 0 :(得分:1)
const int networkOrder = htonl(value);
const result = send(socket, reinterpret_cast<const char *>(&networkOrder), sizeof(networkOrder), 0);
答案 1 :(得分:1)
啊,这很容易解决。编译器想要一个char*
(暂时忽略const
),但是你传递的是unsigned char*
,唯一真正的区别是编译器在操作时如何解释每个字节。因此,您可以轻松地将指针从unsigned char*
转换为char*
。这样:
(char*)serialize_int(...)