LET*_*ETs 4 c++ sockets linux network-programming
我tyring存储在IP地址(V4)转换struct sockaddr到uint32_t.
//struct sockaddr in_addr;
struct sockaddr_in* addr = (struct sockaddr_in*)&in_addr;
uint32_t clientIpAddr = static_cast<uint32_t>(addr->sin_addr.s_addr);
uint16_t clientPortNumber = addr->sin_port;
Run Code Online (Sandbox Code Playgroud)
首先,我想知道这是否会起作用.
其次,将IP地址char[4]转换为uint32_t以后转换为更好吗?
第三,将IP地址0.0.0.1转换为1号?或其他因为字节顺序?
它会起作用,是的.
根据文档,struct in_addr定义如下:
struct in_addr {
uint32_t s_addr; /* address in network byte order */
};
Run Code Online (Sandbox Code Playgroud)
所以是的,你可以将它分配给uint32_t(你甚至不需要把它投射).
"网络字节顺序"位确实也告诉我们,如果你在一个不是大端的机器上运行它,你最终会得到垃圾.你想通过它ntohl()来修复它.
| 归档时间: |
|
| 查看次数: |
7622 次 |
| 最近记录: |