我正在创建一个节俭客户端,它有一堆开销: a TSocket
、 aTBufferedTransport
和 a TBinaryProtocol
。通常它是这样创建的
节俭客户端示例
int main(int argc, char **argv) {
shared_ptr<TTransport> mysocket(new TSocket("localhost", 9090));
shared_ptr<TTransport> mytransport(new TBufferedTransport(mysocket));
shared_ptr<TProtocol> myprotocol(new TBinaryProtocol(mytransport));
TestServiceClient client(myprotocol);
try {
mytransport->open();
client.testmethod(); //and you can call server methods like so
mytransport->close();
}catch (TException &tx) {
printf("ERROR: %s\n", tx.what());
}
}
但是,对于我的客户,我希望它采用静态库的形式。因此,没有 main 方法,我创建了 openinit()
和exit()
close 方法mytransport
。这也意味着我必须创建mysocket
、mytransport
、myprotocol
和client
所有全局变量,但我还想设置mysocket
为“localhost”以外的 ip,这意味着mysocket
在方法内部进行初始化。有任何想法吗?
PS。另外,有人知道我如何在打开和关闭静态库时自动调用init()
吗exit()
?[解决了]
编辑:我忘了提到在我知道正确的 ip 之前我无法初始化 mysocket
,所以我认为我无论如何都不能将 mysocket 声明为全局变量