我正在为C ++中的Minecraft游戏编写服务器。
客户端通过普通套接字向服务器发送初始握手报文。然后,服务器将RSA密钥发送回游戏,从该点开始的所有套接字通信都将通过RSA密钥加密进行AES加密。
我有一个想法,我可以避免实现AES / RSA并链接到我的服务器中的其他库,只需在服务器发送RSA密钥后直接将我的常规boost :: asio套接字转换为boost :: asio ssl套接字客户。
如果已经创建了套接字,我如何转换它?
答案 0 :(得分:5)
ssl::stream
在tcp::socket
之上实现,您可以通过next_layer
或lowest_layer
成员函数直接访问套接字。实际上,要使用ssl::stream
,首先连接下划线套接字,然后调用ssl::stream::handshake
。请注意,您可以在这两个步骤之间执行任何操作,例如直接从tcp::socket
读取和写入。有关详细信息,请参阅this example。