1

我下载了 gSoap 并为 wsdl 生成了源代码。我可以连接到服务器并发送请求。

但我无法理解如何捕获发送的字节数、接收字节数等 http 事件。我阅读了这份文件http://www.cs.fsu.edu/~engelen/soapdoc2.html

但是我找不到我需要的东西。我找到了函数fsend。据我了解,当我们向服务器发送请求时,正在执行此功能。我必须做这样的事情吗?

service.fsend = Custom;

Custom我的回调在哪里?

我发现其他回调是 ffiltersend。据我了解,发送请求时正在运行此功能。我用这个。但我不明白这个方法中的最后一个参数是指向 size_t 的指针。当我从这个指针获得值并除以 2 时,我得到了我的实际字节数。为什么?

4

1 回答 1

0

要获取发送、接收字节数的统计信息,并将入站和出站消息记录到文件系统,请使用 gSOAP 软件附带的“日志记录插件”。

首先,注册插件:

#include "plugin/logging.h" // this file is in the gSOAP distro path
...
soap_register_plugin(soap, logging);

然后使用这些函数设置入站和出站消息的日志记录目标:

soap_set_logging_inbound(struct soap*, FILE*);
soap_set_logging_outbound(struct soap*, FILE*);

其中作为第二个参数传递的文件描述符指向一个打开的文件,您可以在记录之前和之后打开和关闭该文件。NULL用作第二个参数以禁用日志记录。

要获取统计信息,即消息大小字节计数,请使用:

soap_get_logging_stats(struct soap*, size_t *sent, size_t *recv);

此调用将更新第二个和第三个参数。

仅此而已。

如果您想使用自己的消息处理回调,那么从plugin/logging.c文件中学习如何完成可能是一个不错的起点。这个文件很短。

于 2017-07-05T15:35:24.160 回答