Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 带有BSD/POSIX套接字的便携式IPv6连接_C_Sockets_Unix_Ipv6_Berkeley Sockets - Fatal编程技术网

C 带有BSD/POSIX套接字的便携式IPv6连接

C 带有BSD/POSIX套接字的便携式IPv6连接,c,sockets,unix,ipv6,berkeley-sockets,C,Sockets,Unix,Ipv6,Berkeley Sockets,我需要连接到IPv6地址。这不是硬编码的。我将以字节形式(char*)获取IPv6地址,并且不会使用DNS检索它们(getaddrinfo没有运气)。问题是,我要填写的sockaddr_in6结构在不同的平台上完全不同 是否有一种很好的可移植方式从原始地址字节连接到IPv6地址 我还应该提到我也在使用libevent。你真的关心整个结构sockaddr\u in6结构,还是只关心结构in6\u addr?据我所知,我需要sockaddr\u in6连接到IPv6地址。此外,in6_addr(由s

我需要连接到IPv6地址。这不是硬编码的。我将以字节形式(char*)获取IPv6地址,并且不会使用DNS检索它们(getaddrinfo没有运气)。问题是,我要填写的sockaddr_in6结构在不同的平台上完全不同

是否有一种很好的可移植方式从原始地址字节连接到IPv6地址


我还应该提到我也在使用libevent。

你真的关心整个
结构sockaddr\u in6
结构,还是只关心
结构in6\u addr
?据我所知,我需要sockaddr\u in6连接到IPv6地址。此外,in6_addr(由sockaddr_in6使用)在不同的平台上也是不同的。
memset
sockaddr_in6
设置为零,然后只设置所需的字段(大概是
.sin6_系列
.sin6_端口
,以及
.sin6_addr
)。POSIX指定
in6\u addr
必须包含
.s6\u addr[16]
字节,您还关心其他系统吗?(我想Windows很烦人,但这只是一个例子。)好的,谢谢。我可以试试。因此,我将尝试将IP字节移动到sin6_addr。如
memmove(&address.sin6_addr,IP,16)
@MatthewMitchell,
memcpy()
会更有效率,因为
sockaddr\u in6
不太可能与原始字节重叠。