发送和接收字符串时是否需要转换为网络/主机字节顺序.可用的函数(例如htons())仅适用于16位和32位整数.我也知道一个事实,一个字符不应该有所作为,通常,它是一个字节大.然而字符串怎么样?
以下是代码段
int len; recv(fd, &len, sizeof (int), 0);
len = ntohl(len);
char* string = malloc(sizeof (char) * (len + 1));
int received = recv(fd, string, sizeof (char) * len, 0);
string[len] = '\0';
Run Code Online (Sandbox Code Playgroud)
C 字符串只是一个由一字节值组成的数组,并以一字节特殊值的约定来终止它们,因此无需交换任何内容。Shorts 和 ints 是多字节值,根据硬件要求以不同的方式存储,因此需要在网络上标准化它们的存储顺序(如果接收器具有不同的硬件架构)。