- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有这些 typedef 问题是我需要传递一个安全套接字,因为 TSocket 可以直接从 TSecureSocket 转换为 TSocket 吗?还是有其他解决方案?根据端口的不同,我将使套接字安全,而在其他端口上我不会。我只需要返回类型为 TSocket。
typedef boost::asio::ip::tcp::socket TBoostSocket;
typedef boost::asio::ssl::stream<TBoostSocket> TSLLSocket;
typedef boost::shared_ptr<TBoostSocket> TSocket;
typedef boost::shared_ptr<TSLLSocket> TSecureSocket;
最佳答案
I have these typedefs
typedef boost::asio::ip::tcp::socket TBoostSocket;
typedef boost::asio::ssl::stream<TBoostSocket> TSLLSocket;
typedef boost::shared_ptr<TBoostSocket> TSocket;
typedef boost::shared_ptr<TSLLSocket> TSecureSocket;
the problem is I need pass a secure socket as TSocket. Will a direct cast from TSecureSocket to TSocket work ?
简答题因为boost::asio::ssl::stream<TBoostSocket>
包裹套接字。
or is there another solution? depending on the port I will make the socket secure and in others I will not I just need the return type to be TSocket.
但是TSLLSocket
(或者更确切地说是 boost::asio::ssl::stream)提供了一种从实例中检索套接字的方法:
const next_layer_type & next_layer() const;
在哪里next_layer_type
由以下 typedef 定义:
typedef boost::remove_reference< Stream >::type next_layer_type;
http://www.boost.org/doc/libs/1_52_0/doc/html/boost_asio/reference/ssl__stream/next_layer_type.html
由于您使用 TBoostSocket
定义模板那是你打电话时应该得到的 next_layer()
或 lowest_layer()
当然,这会返回一个引用而不是指针,并且该引用指向一个不属于您的实例。所以你现在需要以某种方式将它包装在一个 shared_ptr 中,这可能并不容易,因为你不能允许它被删除。
关于c++ - 在 boost 中将安全套接字作为普通套接字传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13565202/
我是一名优秀的程序员,十分优秀!