【发布时间】:2015-04-21 07:30:12
【问题描述】:
我试图找到简单的方法来选择和侦听随机端口。我可以迭代所有端口并尝试打开每个端口,然后将 fd 传递给 BIO,但是这个解决方案太复杂并且可能会被破坏。另外,我正在寻找便携式解决方案。
而不是我搜索单个 OpenSSL 函数,但找不到任何函数。有没有 OpenSSL 库提供的像单个函数调用这样简单的解决方案。
关于我的回复:
我在将“*”或“*:*”传递给 BIO_new_accept 并通过 BIO_get_accept_port 获取端口号时遇到问题。在这种情况下,BIO_get_accept_port 准确地返回我传递给 BIO_new_accept 的字符串。有什么建议如何获取端口号?
补充编辑:
我发现我必须在使用 asterix 调用 BIO_new_accept 之后调用 BIO_do_accept,但是出现错误:
140418757990096:error:02003000:system library:getservbyname:system library:b_sock.c:224:service='*'
【问题讨论】:
-
你的意思是说服务器应该随机绑定到一个端口并监听而不是特定的端口? (比如如果没有具体绑定,客户会怎么做)?
-
我的意思是服务器应该绑定在第一个空闲端口。客户端知道端口号,因为服务器运行客户端并将端口号设置为环境变量。
标签: c network-programming openssl server