【问题标题】:Recv() in Winsock requires signed bufferWinsock 中的 Recv() 需要有符号缓冲区
【发布时间】:2020-02-17 19:26:16
【问题描述】:

我在 Linux 上使用 recv()unsigned char buffer,效果很好。

但 Windows 上的 recv() 需要 signed char,我不知道为什么。

我认为数据包只能是 ASCII 字符。

我应该使用类似(char)buffer的东西吗?

【问题讨论】:

标签: c++ sockets


【解决方案1】:

charunsigned charsigned char 是不同的类型,但都是 8 位的。理论上,所有“缓冲区”都应该是unsigned char*。实际上,许多函数使用普通的char*,包括大多数 Win32 API。在所有这些情况下,它都是一个普通的 8 位数组。

简而言之,随意施放。

实际上需要char 而不是unsigned char 的情况应该很容易检测和处理。

根据@JJ 评论,您还拥有std::byte 用于没有字符特征的原始 8 位内容,类似于 Win32 中的 BYTE。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2010-10-13
  • 2012-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-05
  • 1970-01-01
相关资源
最近更新 更多