将 32 位网络命令转换为 C 中的主机

标签 c sockets

我正在尝试将 uint32_t 从网络字节顺序转换为主机格式。我正在从存储在缓冲区中的 4 个字节的 tcp 连接读取数据,如下所示:

ssize_t read = 0;
char *file_buf;
size_t fb_size = 4 * sizeof(char);
file_buf = malloc(fb_size);
read = recv(socket_file_descriptor,file_buf,fb_size,0);

所以我将数字存储在 file_buf 中,但我想要一个数字,我该怎么做?

最佳答案

这看起来很简单:

ssize_t read = 0;
uint32_t myInteger;  // Declare a 32-bit uint.

// Pass a pointer to the integer, and the size of the integer.
read = recv(socket_file_descriptor,&myInteger,sizeof(myInteger),0);

myInteger = ntohl(myInteger); // Change from Network order to Host order.

关于将 32 位网络命令转换为 C 中的主机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55748113/

相关文章:

c - 我如何跟踪 gcc 中的变量变化

c - netcat gcc 编译选项,以便 IDA pro 可以显示函数名称

java套接字数据输入流

Python sendto() 未执行

c - 如何在 C linux 套接字中包含 IP 数据包?

spring - JavaFX 桌面应用程序 - 与 Web 服务的套接字通信

c++ - 如何创建 802.11 帧?

c - 反转链表中的指针

c - 请解释此程序中的逗号运算符

在c中的main内部调用main