【发布时间】:2012-03-21 15:35:07
【问题描述】:
我正在使用 Linux 套接字编程编写客户端和服务器程序。我对某事感到困惑。虽然 sizeof(char) 保证为 1,但我知道 char 的实际大小在不同的计算机中可能会有所不同。它可能是 8 位、16 位或其他大小。问题是如果客户端和服务器的字符大小不同怎么办。例如客户端字符大小为 8 位,服务器字符大小为 16 位。客户端调用 write(socket_fd, *c, sizeof(char)) 和服务器调用 read(socket_fd, *c, sizeof(char))。客户端是否发送 8 位而服务器想要接收 16 位?如果是真的,会发生什么?
另一个问题:在客户端和服务器之间传递文本是否对我有好处,因为我不需要考虑大端和小端的问题?
提前致谢。
【问题讨论】:
-
我相信所有提供 IP(例如 TCP/IP)套接字的系统都有 8 位
char(并且 8 位字节大小在 Internet 协议规范内),所以你不应该在实践中打扰.而且我不知道 Linux 已被移植到任何非 8 位字节和字符系统(这些在今天非常罕见)。 Linux 需要 char-s 是 8 位字节。 -
@Basile:协议规范故意避免使用字节,而是出于这个原因指定八位字节。
-
是的,但是八位字节的概念深深地构建在 TCP/IP 中,这是一种迂腐的说法,即在 Linux 上,字符必须是 8 位字节。
标签: linux sockets network-programming