ssl 中的会话重用非常普遍,curl 在命令行中也被广泛使用。它肯定应该有一个选项可以将 SSL/TLS 会话 ID 保存到文件中,然后在下次调用时重用它...
在移动传输不便宜的区域使用 curl 是必须的。
有谁知道实现这个的任何可能性,或者它可能已经在某个地方可用?
在 openssl 中,这并不难(读取或存储会话到文件)
Setting session from previous attempt:
SSL_SESSION* session = d2i_SSL_SESSION(NULL, &readFromFile,fileLen);
SSL_set_session(cSSL, session );
SSL_SESSION_free(cachedSession);
Storing session from current connection:
SSL_SESSION* session = SSL_get1_session(cSSL)
int len = i2d_SSL_SESSION(session, NULL); //get needed size
unsigned char *file_data = new char[len]
len = i2d_SSL_SESSION(session, &file_data );
//Store to file file_data of len
Run Code Online (Sandbox Code Playgroud)
对于粗略的命令行操作,您无需存储主机和端口,即可知道会话属于哪个主机,而让用户自行处理。
所以 curl 会带有 1 个或 2 个标志
--ssl-session-file @file
Run Code Online (Sandbox Code Playgroud)
或者
--ssl-session-file @existing_session_file and --ssl-session-save-file @new_session_file
Run Code Online (Sandbox Code Playgroud)
这能做到吗?这将使命令行 curl …
我有一个类,我希望有一个静态成员,它是一个结构.
例如:.h文件:
typedef struct _TransactionLog
{
string Reference;
vector<int> CreditLog;
int id;
}TransactionLog;
class CTransactionLog {
static TransactionLog logInfo;
public:
static void Clear();
static TransactionLog getLog();
};
Run Code Online (Sandbox Code Playgroud)
.cpp文件:
void CTransactionLog::Clear()
{
logInfo.Reference = "";
logInfo.CreditLog.clear();
logInfo.id = 0;
}
TransactionLog CTransactionLog::getLog()
{
return logInfo;
}
Run Code Online (Sandbox Code Playgroud)
我明白了
描述资源路径位置类型
未定义的对"CTransactionLog :: logInfo"TransactionLog.cpp的引用
有人可以举个例子来说明如何使这项工作成功吗?拥有一个静态成员是一个struct(带有stl成员),使用静态成员方法对其进行操作,并在代码的其他几个部分中包含此头.这应该用于通过应用程序添加日志记录.