c++ - 将 UInt32 / UInt8[16] 转换为 SOCKADDR_STORAGE
问题描述
我将使用 UInt32 形式的 IPv4 地址或 UInt8[16] 形式的 IPv6。当前的方法是将它们转换为字符串,然后用于WSAStringToAddress
转换为PSOCKADDR_STORAGE
. 我想知道是否有一个标准实现来减少转换为字符串。将有一个标识地址系列的标志,所以我至少可以让它消失。
DWORD ConvertStringToAddress(_In_ LPWSTR AddressString,
_Out_ PSOCKADDR_STORAGE Address)
{
DWORD Status = NO_ERROR;
INT AddressSize;
AddressSize = sizeof(*Address);
Address->ss_family = AF_INET;
if (WSAStringToAddress(AddressString,
AF_INET,
NULL,
(PSOCKADDR)Address,
&AddressSize))
{
AddressSize = sizeof(*Address);
Address->ss_family = AF_INET6;
if (WSAStringToAddress(AddressString,
AF_INET6,
NULL,
(PSOCKADDR)Address,
&AddressSize))
{
// handle error
}
}
return Status;
解决方案
推荐阅读
- python - 显示不需要的插值线的时间序列图
- c# - 控制台应用程序在 Windows 共享服务器中不起作用
- multithreading - 一个线程可以阻塞完成 ForkJoinPool
- python - 如何为两个单独的 Dbus Python 程序创建 Dbus Mainloop
- vue.js - Vue.Js 错误消息无法将属性“personasD”设置为 null
- python - 如何在python中的一个单元格中合并多个值
- c - 后缀在 C 中得到错误的值
- r - 带 rvest 的循环
- excel - VBA 中的对象引用问题
- css - 在 JavaFX 中的单个 TextField 中支持多种语言字体