作者: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