gsoap https 问题

linxren 2011-09-05 09:49:17
现在使用WITH_OPENSS选项编译。

客户端加入:
soap_ssl_init();
if( soap_ssl_client_context(&SmsWBS_soap, SOAP_SSL_NO_AUTHENTICATION, NULL, NULL, NULL, NULL, NULL) ) {
soap_print_fault(&SmsWBS_soap, stderr);
return -1;
}

服务端加入:
soap_ssl_init();
if( soap_ssl_server_context( &SmsWBS_soap, SOAP_SSL_DEFAULT, "pem/server.pem", "password", NULL, NULL, "pem/dh512.pem", NULL, argv[0] ) ){
soap_print_fault(&SmsWBS_soap, stderr);
exit(-1);
}

编译调用都成功。但是客户端调用服务很久才有返回,差不多10秒吧。我跟代码,发现gsoap服务端最后调用soap_closesock函数很慢。
是soap_ssl_client_context 和 soap_ssl_server_context这两个函数引起的吗? 这两个函数中的证书怎么用?
...全文
161 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
linxren 2011-09-06
  • 打赏
  • 举报
回复
解决了:
http://www.cs.fsu.edu/~engelen/soapbugs.html
中提到了修正这个bug:
The following is a fix to improve SSL shutdown speed (stdsoap2.c[pp] line 4630) by replacing SOAP_TCP_SELECT_SND by SOAP_TCP_SELECT_RCV:

{ /*
wait up to 10 seconds for close_notify to be sent by peer (if peer not
present, this avoids calling SSL_shutdown() which has a lengthy return
timeout)
*/
r = tcp_select(soap, soap->socket, SOAP_TCP_SELECT_RCV | SOAP_TCP_SELECT_ERR, 10);

在stdsoap2.c[pp]文件中,找到tcp_disconnect函数,将上面的tcp_select调用中的SOAP_TCP_SELECT_SND 改成 SOAP_TCP_SELECT_RCV 就可以了。
至善者善之敌 2011-09-05
  • 打赏
  • 举报
回复
对照这个http://blog.csdn.net/tcysb/article/details/1856352

查你那两个函数
jackyjkchen 2011-09-05
  • 打赏
  • 举报
回复
https没见过不慢的,red hat和oracle的下载站点就是例子
luciferisnotsatan 2011-09-05
  • 打赏
  • 举报
回复
gsoap底下应该是用了libcurl或者你自己定义的函数来做https的,跟进去看看。

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧