C++ DTLSv1\u listen`的'peer'类型是什么?

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对象。比如说:

我试图实现一个DTLS服务器,但在
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;
}