小编Lon*_*nko的帖子

curl 命令行 ssl 会话重用

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 …

ssl curl openssl libcurl

6
推荐指数
0
解决办法
4292
查看次数

静态类成员,它是一个结构

我有一个类,我希望有一个静态成员,它是一个结构.

例如:.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成员),使用静态成员方法对其进行操作,并在代码的其他几个部分中包含此头.这应该用于通过应用程序添加日志记录.

c++ static struct linker-errors stdvector

2
推荐指数
1
解决办法
6798
查看次数

标签 统计

c++ ×1

curl ×1

libcurl ×1

linker-errors ×1

openssl ×1

ssl ×1

static ×1

stdvector ×1

struct ×1