为什么DTLSv1_listen()返回零?

时间:2013-03-07 01:44:59

标签: ssl openssl dtls

我正在使用示例代码“dtls_udp_echo.c”...

学习DTLS

服务器:“DTLSv1_listen(ssl,& client_addr)”

底层套接字是非阻塞的,但会在可读性时唤醒。

一旦客户端执行SSL_connect(),就会调用服务器。所以我相信你好,服务器会传输和接收你好。但是DTLSv1_listen()总是返回零,而client_addr也全为零。我只是不明白这可能是错的。

我采取相关帖子的建议来添加SSL_state_string_long()。在DTLSv1_listen()返回0之后,它会打印“SSL状态之前/接受初始化”。

感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

也许您启用了Cookie兑换?我不确定在较新的openssl版本中是否默认启用它。为了防止服务器受到dos攻击,hello消息有不同的行为。客户端发送hello,服务器以helloVerifyRequest回答。客户端发送带有附加cookie的hello。服务器验证此cookie,当它有效时,正常的握手例程继续。发送此HelloVerifyRequest后,DTLSv1_listen返回0。可能是你的问题。我发现了一个关于客户端服务器与dtls通信的近乎完美的文档。这是link