相关文章推荐

作者:flyfish 2012-5-12

目的:利用 gSOAP 自带的 Calc 例子 仿写一个 网络中使用计算器

客户端通过 http 发送 xml 格式的数据请求,服务端计算完之后,将结果以 xml 格式返回给客户端。

编写之后 我们的服务端可独立使用。像在安装了 IIS 或者用 Apache 配置的 Web 服务器。

gSoap 版本 2.8.8

编译环境为 winXP+VC6

soapcpp2.exe wsdl2h.exe 这两个文件的目录是

gsoap_2.8.8\gsoap-2.8\gsoap\bin\win32 路径

生成服务端文件命令 soapcpp2.exe -S -i -T calc.h 文件的路径

生成客户端文件命令 soapcpp2.exe -C -i calc.h 文件的路径

-S 的含义是生成服务端代码

-C 的含义是生成客户端代码

-T 生成一个测试例子,我们可以仿照这个例子编写自己的程序

-i SOAP 结构生成服务代理和继承的对象

服务端编写

vc 新建一个 win32 控制台的工程名字叫 ServerCal

添加到工程中的文件包括

soapC.cpp

soapcalcService.h

soapcalcService.cpp

soapH.h

soapStub.h

calc.nsmap

stdsoap2.h

stdsoap2.cpp

stdsoap2.h stdsoap2.cpp 这两个文件存在 gsoap_2.8.8\gsoap-2.8\gsoap 目录下面

main 函数存所在的文件是 ServerCalc.cpp

#include "soapcalcService.h"

#include "calc.nsmap"

int main( int argc, char **argv)

calcService calc;

if (argc < 2)

calc.serve(); /* serve as CGI application */

int port = atoi(argv[1]);

if (!port)

fprintf(stderr, "Usage:calcserver++ <port>\n" );

exit(0);

/* run iterative server on port untilfatal error */

if (calc.run(port))

calc.soap_stream_fault(std::cerr);

exit(-1);

return 0;

int calcService::add( double a, double b, double *result)

{ *result = a + b;

return SOAP_OK;

int calcService::sub( double a, double b, double *result)

{ *result = a - b;

return SOAP_OK;

实现乘法,除法等的其他接口见源码

主函数代码比较简单,因为 calcService 进行了一些封装

生成编译看下,运行下。要在控制台运行。使用 cmd 命令

exe 程序的路径 端口号

例如 c:\ServerCalc.exe 8080

服务端运行起来之后,在浏览器输入 http://localhost:8080/

如果没有看到类似下面的 xml 格式的文件,说明服务器出现错误

<?xmlversion="1.0" encoding="UTF-8" ?>

-<SOAP-ENV:Envelopexmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns="urn:calc">

-<SOAP-ENV:Body>

-<SOAP-ENV:Fault>

<faultcode>SOAP-ENV:Client</faultcode>

<faultstring>HTTPGET method not implemented</faultstring>

</SOAP-ENV:Fault>

</SOAP-ENV:Body>

</SOAP-ENV:Envelope>

客户端的编写

新建一个控制台程序 ClientCalc

需要添加到工程的文件包括

calc.nsmap

soapC.cpp

soapcalcProxy.cpp

soapcalcProxy.h

socpClient.cpp

soapH.h

soapStub.h

stdsoap2.h

stdsoap2.cpp

ClientCalc.cpp main 函数所在的文件,客户端代码如下

#include "soapcalcProxy.h"

#include "calc.nsmap"

const char server[] = "http://localhost:8080" ;

int main( int argc, char **argv)

if (argc < 4)

fprintf(stderr, "Usage:[add|sub|mul|div|pow] num num\n" );

exit(0);

double a, b, result;

a = strtod(argv[2], NULL);

b = strtod(argv[3], NULL);

calcProxy calc;

calc.soap_endpoint = server;

switch (*argv[1])

case 'a' :

calc.add(a, b, &result);

break ;

case 's' :

calc.sub(a,b, &result);

break ;

case 'm' :

calc.mul(a,b, &result);

break ;

case 'd' :

calc.div(a,b, &result);

break ;

case 'p' :

calc.pow(a,b, &result);

break ;

default :

fprintf(stderr, "Unknown command\n" );

exit(0);

if (calc.error)

calc.soap_stream_fault(std::cerr);

printf( "result =%g\n" , result);

return 0;

生成客户端 exe ,命令行执行

C:\Documents andSettings\Administrator>C:\work\ClientCalc\Debug\ClientCalc.exe a 1 2

让服务端计算 1+2 等于多少

如果出现如下错误,通常错误的原因是客户端的端口号与服务端的端口号不匹配

SOAP 1.1 fault:SOAP-ENV:Client[no subcode]

由于目标机器积极拒绝,无法连接。

Detail: connectfailed in tcp_connect()

源码下载地址: http://download.csdn.net/detail/flyfish1986/4299760

以上代码在 winxp vc6 下编译通过

C++ 开发SOAP服务端和SOAP客户端作者:flyfish  2012-5-12目的:利用gSOAP自带的Calc例子 仿写一个 网络中使用计算器客户端通过http发送xml格式的数据请求,服务端计算完之后,将结果以xml格式返回给客户端。编写之后 我们的服务端可独立使用。像在安装了IIS或者用Apache配置的Web服务器。gSoap版本 2.8.8 编译环境为
通过g soap 生成 客户端 代码,自己编写程序调用接口时, soap cpp2 2.8.11版本出现下面的提示 Error 200 fault: SOAP - ENV : Client [no subcode], soap cpp2 2.8.17出现下面的提示 Error 3 fault: SOAP - ENV : Client [no subcode] "Validation constraint violati
近来我在linux上使用g Soap ,根据客户提供的WSDL文件生成头文件的时候,不知什么原因老报错,信息如下: [root@Centos6-5-64bit usertools]# wsdl2h  -o AAAserver.h AAAserver.wsdl **  The g SOAP WSDL/Schema processor for C and C++ , wsdl2h release 2.8....
用g SOAP 开发 Web Service 服务端 ,按照g soap 的User's Guide的sample,自己仿着写了个例子,但是在浏览器上输入: http://localhost:18083/访问的网页显示 XML code <?xml version="1.0" encoding ="UTF-8" ?> - < SOAP - ENV : Env elope xmlns:SO...
局域网 服务端 客户端 文件传输系统c是一种基于C语言 开发 的可以实现在局域网内文件传输的 服务端 客户端 系统。 服务端 为主机,拥有文件资源的访问和控制权,可以随时上传和下载文件, 客户端 则是通过与 服务端 建立连接,获取 服务端 授权后对文件进行上传和下载的终端设备。此系统主要用于实现在局域网内快速、高效、安全的文件传输。 此系统具有以下基本特点: 1. 支持多线程传输: 客户端 可以同时上传和下载多个文件,减少了等待时间,提高了传输效率。 2. 支持断点续传:如果传输过程中网络连接断开或者 客户端 主动中断传输,下次重新连接后可以从上次传输的位置继续传输。 3. 支持文件加密:可以在传输前对文件进行加密,保证文件传输的安全性。 4. 配置灵活:可以通过配置文件对系统进行配置,满足不同用户的需求,例如设置传输速度和端口号等。 总之,局域网 服务端 客户端 文件传输系统c是一套功能完善、操作简便、安全可靠的文件传输系统,可应用于各种不同类型的组织和机构,提高文件传输效率和安全性。
PyTorch - transforms.ColorJitter 改变图像的属性:亮度(brightness)、对比度(contrast)、饱和度(saturation)和色调(hue) 49999
 
推荐文章