C++ DTLSv1\u listen`的'peer'类型是什么?
我试图实现一个DTLS服务器,但在C++ DTLSv1\u listen`的'peer'类型是什么?,c++,openssl,dtls,C++,Openssl,Dtls,我试图实现一个DTLS服务器,但在DTLSv1\u listen中遇到了问题。我使用的是OpenSSL 1.1.1c,来自DTLSv1\u listen的peerarg的类型似乎是BIO\u ADDR*。我对如何使用它感到困惑,因为文档并没有真正的帮助。本教程只是将一个sockaddr*(或者是sockaddr\u in6?)传递给同行。这样行吗?如果没有,如何将BIO\u ADDR*转换为sockaddr*?使用BIO\u ADDR\u new创建新的BIO\u ADDR对象。比如说:
DTLSv1\u listen
中遇到了问题。我使用的是OpenSSL 1.1.1c,来自DTLSv1\u listen
的peer
arg的类型似乎是BIO\u ADDR*
。我对如何使用它感到困惑,因为文档并没有真正的帮助。本教程只是将一个sockaddr*
(或者是sockaddr\u in6
?)传递给同行。这样行吗?如果没有,如何将BIO\u ADDR*
转换为sockaddr*
?使用BIO\u ADDR\u new
创建新的BIO\u ADDR对象。比如说:
BIO_ADDR *addr = BIO_ADDR_new();
int ret;
if (addr == NULL)
goto err;
ret = DTLSv1_listen(ssl, addr);
/* Handle the result of DTLSv1_listen */
BIO_ADDR_free(addr);
您可以使用各种可用的getter函数检查BIO_ADDR的内容。请参阅此处的BIO_ADDR文档:
看了一眼之后,似乎BIO\u ADDR
相当于
struct {
sockaddr_storage sockStorage;
sockaddr_in6 sock6;
sockaddr_in sock4;
}