通过winsocks传递int发送

时间:2010-12-06 08:37:55

标签: c++

如何通过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 *)。我被卡住了......

2 个答案:

答案 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(...)