"DTLSv1_listen"的"peer"类型是什么

What is the type of `peer` for `DTLSv1_listen`?

本文关键字:quot 类型 是什么 peer DTLSv1 listen      更新时间:2024-03-28

我正在尝试实现以下DTLS服务器https://gist.github.com/Jxck/b211a12423622fe304d2370b1f1d30d5,但我在DTLSv1_listen遇到了麻烦。我使用的是OpenSSL 1.1.1c,DTLSv1_listen中的peerarg的类型似乎是BIO_ADDR *。我对如何使用它感到困惑,因为文档并没有真正的帮助。本教程只是传递了一个sockaddr *(或者是sockaddr_in6?(来进行对等。这样行吗?如果没有,如何将BIO_ADDR *转换为sockaddr *

使用BIO_ADDR_new创建一个新的BIO_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文档:

https://www.openssl.org/docs/man1.1.1/man3/BIO_ADDR.html

https://github.com/nplab/DTLS-Examples/blob/master/src/dtls_udp_echo.c,似乎BIO_ADDR相当于

struct {
sockaddr_storage sockStorage;
sockaddr_in6 sock6;
sockaddr_in sock4;
}