我正在尝试使用gSOAP Web服务和C ++将图像从客户端应用程序发送到服务器。为此,我使用Qt,我的客户端和服务器应用程序可以在Windows和Linux上运行。令人惊讶的是,对于1MB jpg图像,在Linux和Windows平台上将图像从客户端发送到运行在同一台计算机上的服务器大约需要6秒。我的应用程序或任何其他Web服务技术是否有问题需要同时进行?
P.S。要发送数据,我使用 unsigned char * 类型。
编辑1:如何使用base64数据类型通过gSOAP发送二进制数据。在我阅读文档时,.stub文件中没有可用的数据类型。
答案 0 :(得分:2)
XSD base64Binary类型是XML模式本机原始二进制类型。禁用-DDEBUG
时性能应该非常好(因为消息记录很慢!)。
gSOAP工具生成高效的XML序列化程序,可以直接在线路上推送和拉动base64,同时直接从/向原始数据转换。
以下是典型系统上的一些数字,假设网络开销较低:
Elapsed real time = 140 (ms) CPU time = 120 user = 40 system = 80
Elapsed real time = 820 (ms) CPU time = 450 user = 280 system = 170
Elapsed real time = 5650 (ms) CPU time = 3730 user = 2740 system = 990
网络带宽可能是您业绩的一个因素。
PS。您可能希望尝试SOAP_IO_CHUNK
进行分块转移。更积极的方法是更改SOAP_BUFLEN
(通常为64K)以优化套接字缓冲区大小(并重新编译包含stdsoap2.h
的所有源以确保使用新的缓冲区大小。)