CentOS6.5下编绎gSoap相关问题及解决
- 格式:docx
- 大小:17.42 KB
- 文档页数:6
1. 在VMware上安装CentOS6.5后,选择桥接或NA T发现无法上网。
2. 采用dhcp,发现无法获取ip地址,网卡图标状态为未连接
3. 若手动配置ip为172.16.20.191,ping主机外网卡ip 172.16.20.196和网关ip 172.16.20.1,结果显示如下:
4. 主机网络适配器如下图,必须通过红圈圈出的网卡桥接或NA T上网:
5. 现在通过VMware添加一个虚拟网络,通过桥接方式解决无法上网的问题,按图示打开Virtual Network Editor:
6. 点击“Add Network...”,从下拉列表中选择任一个均可,此处选“VMnet5”,点击“OK”,并按下图进行设置,完成后点击“OK”:
7.再设置虚拟机CentOS的联网方式,如图:
网络连接方式选择“Custom:Specific virtual network”,并选择第6步中新添加的虚拟网“VMnet5”,点击“OK”完成。
8.启动虚拟机CentOS 6.5后,可通过dhcp自动获取ip及DNS,也可手动设置;若手动配置其网卡ip,必须和桥接的物理网卡在一个网段(这里为172.16.20.0/24),同时设置正确的网关和DNS服务器,如图:
9.ping操作进行验证:
OK,百度也能ping通,问题解决!!!2014-10-09。
当CentOS配置失败时,也许你对失败的原因毫无所知,从哪里开始改正错误呢?这里,我们对一些常见导致失败的问题进行了一下汇总。
CentOS配置问题中,CentOS系统用yum命令升级php和mysql失败的解决办法CentOS配置失败的情况是:首先参看系统的php版本1.# rpm -qa |grep php2.php-common-5.1.6-20.el5_2.13.php-cli-5.1.6-20.el5_2.14.php-5.1.6-20.el5_2.15.php-ldap-5.1.6-20.el5_2.1然后看到此版本不是最新的用下面的命令升级1.# yum -y update php2.Loading "fastestmirror" plugin3.Loading mirror speeds from cached hostfile4.* base: 5.* updates: 6.* addons: 7.* extras: 8.Setting up update Process9.Could not find update match for php10.No Packages marked for UpdateCentOS配置说没有可以升级的php版本,而官方的php都是最新的了,php是5.2.*的了可是centos系统的还是5.1。
解决思路:是由于centos系统自带的源里面的php版本没有更新,需要额外的源才可以升级php和mysql。
办法:更新系统的源,然后在升级就可以解决了。
1.#vi /etc/yum.repos.d/zongguofengcn.repo2.[utterramblings]=Jason's Utter Ramblings Repo4.baseurl=/media/EL$releasever/$basearch/5.enabled=16.gpgcheck=17.gpgkey=/media/RPM-GPG-KEY-jlitka保存此文件wq,再次运行下面的命令就可以完成php的升级了#yum -y update php,同理,运行下面命令,升级mysql #yum -y update mysql,注释:CentOS配置中yum是linux版本的一些rhel、centos等系统自带的用于方便地添加/删除/更新RPM包的工具,它能自动解决包的倚赖性问题。
gsoap编译GSOAP是一款开源的C/C++软件,是一种基于SOAP的Web服务开发工具。
它可以让用户通过简单的代码,实现创建SOAP消息、IPC、Web服务和Web应用程序等功能。
用户可以使用gSOAP开发部署服务器端和客户端的应用程序。
本文将向您介绍gSOAP编译,并告诉您如何使用该工具。
第一步:下载gSOAP软件包在编译gSOAP之前,我们需要从官方网站下载gSOAP软件包。
该网站提供了多种版本的gSOAP,您可以根据自己的需要选择不同的版本。
建议您下载最新版本的gSOAP。
第二步:解压缩gSOAP软件包下载完成后,将gSOAP 软件包解压缩到您的计算机上。
如果您使用的是Linux和Unix操作系统,可以利用tar命令实现解压缩操作。
例如:$ tar xzf soapsource.tgz第三步:配置gSOAP 进入gSOAP软件包目录。
在该目录中会看到一个名为configure的文件。
Connectors目录中有可选的连接器。
可以使用的连接器有:Stdio连接器SSL连接器HTTPS连接器zlib连接器接下来,我们通过执行configure脚本来生成Makefile,执行以下命令: $ ./configure如果您需要配置gSOAP的全部选项,可以使用以下命令: $ ./configure --help第四步:编译gSOAP 在配置完gSOAP后,我们可以进入soapcpp2目录并使用make命令进行编译。
以下是命令:$ cd gsoap-<version>/gsoap$ make这会生成一个名为soapcpp2的可执行文件。
我们可以使用该文件来生成SOAP客户端和服务器端的代码。
第五步:测试gSOAP 完成编译后,您可以使用gSOAP 测试Web服务和Web应用程序。
您可以使用以下命令测试gSOAP:$ ./soapcpp2该命令将告诉gSOAP要生成客户端和服务器端代码的相关选项。
VMware中CentOS6.5无法连接网络怎么解决有网友反映为VMware安装CentOS6.5后,无法连接网络,这是什么原因导致的呢?可能是某些文件配置出错,下面小编就给大家介绍下VMware中CentOS6.5无法连接网络的解决方法。
主要原因:eth0文件配置了不正确的地址。
正确配置方法如下:1.确保虚拟网卡(VMware Network Adapter VMnet8)是开启的,然后在Windows的命令行里输入“ipconfig”,找到VMware Network Adapter VMnet8的ipv4地址例如:192.168.78.1)2.查看虚拟机中CentOS的网络配置是否为NAT3.修改 /etc/sysconfig/network-scprits/eth0文件BROADCAST 的IP值要和VMNET8中的ip保持一致且最后一位必须为255IPADDR的IP值要和VMNET8中的ip保持一致且最后一位必须为1~255的任意值GETWAY的IP值要和VMNET8中的ip保持一致且最后一位为2 eg:我本机的ip为192.168.78.1,那么正确的配置为:BROADCAST=192.168.78.255IPADDR=192.168.78.1GETWAY=192.168.78.24.配置完毕后,请输入命令“service network restart”来重启网络服务。
5.通过“ping”命令看是否已经可以联网。
补充:常见网络故障解决方法ip地址冲突:ip地址冲突是局域网中经常出现的问题,有的用户可能重做系统或其他原因丢失自己的IP地址,在重新写IP的时候和其他人的IP地址一样导致ip地址出错,此时电脑右下角就会有个提示框提示你IP地址已经有人用。
部门网管应该统计好部门人员的IP地址,当出现问题时可有资料可循,避免IP地址冲突。
计算机网卡故障,一般的主机网卡都带有网卡指示灯,网卡灯有两种类型,一种是只有单灯,一种是双灯。
centos6中unrecognized service -回复在CentOS 6中,当我们运行类似于"unrecognized service"的命令时,意味着系统无法识别或找不到该特定的服务。
这可能是由于多个原因导致的,包括服务名称输入错误、服务未安装或未正确配置等问题。
本文将逐步解释如何处理这个问题。
首先,当我们在CentOS 6中运行某个服务时遇到"unrecognized service"错误消息时,首要的步骤是确认我们输入的服务名称是否正确。
在Linux系统中,服务名称通常是区分大小写的,因此请确保完全按照服务名称输入。
例如,如果我们要尝试运行Apache HTTP服务器,请确保使用的命令是`service httpd start`而不是`service HTTPD start`或任何其他大小写组合。
其次,我们需要确保所需的服务已经安装在我们的CentOS 6系统上。
在CentOS 6中,我们可以使用yum包管理器来安装软件包。
例如,如果我们要安装Apache HTTP服务器,请运行以下命令来检查是否已安装:shellyum list installed httpd如果显示了已安装的软件包及其版本信息,表示Apache HTTP服务器已经成功安装。
如果未找到任何关于httpd的信息,我们可以使用以下命令来安装它:shellyum install httpd请注意,我们可能需要具有管理员权限来安装软件包。
接下来,确保我们已经启用了所需的服务。
在CentOS 6中,可以使用以下命令检查服务是否已启用:shellchkconfig list serviceName请将"serviceName"替换为我们要检查的服务的实际名称。
如果服务已启用,应该会在输出中看到"on"。
如果服务未启用,可以使用以下命令启用它:shellchkconfig serviceName on最后,如果我们已经按照上述步骤检查了服务名称、安装了所需的软件包并启用了服务,但仍然遇到"unrecognized service"错误消息,可能是由于服务未正确配置所致。
今天想在pc机上安装一个centos6.4,每次到分区的时候总提示sda必须有一个GPT磁盘标签,无法继续安装。
经过观察后,才知道这个时候需要建一个gpt的标签,网上查了一下,具体操作如下:
PS:下面步奏一定要在磁盘分区之前操作,如果已经分区,需要重置或返回上一页面去添加标签,如果分区完成,再去设置GPT标签,GPT标签会无效,还是会有这个提示的。
1、在进入安装界面,也就出现图形界面时,对它命令首先创建gpt
--按ctrl+alt+f2的组合键,然后进入命令行
--进行如下操作
输入parted
输入mklabel gpt /dev/sda
在提示界面中,输入Yes
使用print /dev/sda 进行确认
按ctrl+alt+f6回到安装界面
2、再次按顺序安装,对硬盘进行重新分区,顺利通过。
Linux下gsoap的使用及移植1、下载gsoap在gsoap的官网中可以找到最新的gsoap安装包及相关文档gsoap官网:/~engelen/soap.html下载地址:/projects/gsoap2/files/2、安装gsoapa、解压zip压缩包命令:unzip gsoap_2.8.1.zipb、进入解压后生成的文件夹gsoap-2.8命令:cd gsoap-2.8/c、切换到root用户命令:su输入密码d、配置编译环境在gsoap-2.8/文件夹下执行configure文件,自动配置编译环境命令:./configuree、编译连接命令:makef、安装gsoap命令:make install安装完毕可用wsdl2h或soapcpp2查看gsoap是否已经安装成功看到上述两个命令的返回说明安装成功3、应用实例wsdl2h -o outfile.h infile.wsdl 实现wsdl文件到h文件的数据映射soapcpp2 -c outfile.h生成相应的底层通信stub,strech程序首先新建一个文件夹名为gsoap;然后(1)不使用wsdl2ha、不使用wsdl2h我们可以直接从.h文件来生成代码。
我们先定义一个函数声明文件,用来定义接口函数,名称为add.h,内容如下://gsoapopt cw//gsoap ns2 schema namespace: urn:add//gsoap ns2 schema form: unqualified//gsoap ns2 service name: add//gsoap ns2 service type: addPortType//gsoap ns2 service port:/~engelen/addserver.cgi//gsoap ns2 service namespace: urn:add//gsoap ns2 service transport: /soap/http//gsoap ns2 service method-style: add rpc//gsoap ns2 service method-encoding:add /soap/encoding///gsoap ns2 service method-action: add ""int ns2__add( int num1, int num2, int* sum );b、执行soapcpp2 –c add.h,自动生成一些远程调用需要的文件c、接下来写一个服务端,创建文件addserver.c#include "add.nsmap"int main(int argc, char **argv){int m, s;struct soap add_soap;soap_init(&add_soap);soap_set_namespaces(&add_soap, namespaces);if (argc < 2) {printf("usage: %s <server_port> \n", argv[0]);exit(1);}else{m = soap_bind(&add_soap, NULL, atoi(argv[1]), 100);if (m < 0){soap_print_fault(&add_soap, stderr);exit(-1);}fprintf(stderr, "Socket connection successful: master socket = %d\n", m);for (;;){s = soap_accept(&add_soap);if (s < 0){soap_print_fault(&add_soap, stderr);exit(-1);}fprintf(stderr, "Socket connection successful: slave socket = %d\n", s);soap_serve(&add_soap);soap_end(&add_soap);}}return 0;}int ns2__add(struct soap *add_soap, int num1, int num2, int *sum){*sum = num1 + num2;return 0;}d、接着写一个客户端,文件名为addclient.c#include "soapStub.h"int add(const char *server, int num1, int num2, int *sum){struct soap add_soap;int result = 0;soap_init(&add_soap);soap_set_namespaces(&add_soap, namespaces);soap_call_ns2__add(&add_soap, server, NULL, num1, num2, sum);printf("server is %s, num1 is %d, num2 is %d\n", server, num1, num2);if (add_soap.error){printf("soap error: %d, %s, %s\n", add_soap.error, *soap_faultcode(&add_soap), *soap_faultstring(&add_soap));result = add_soap.error;}soap_end(&add_soap);soap_done(&add_soap);return result;}e、最后写一个测试代码,addtest.c#include <stdio.h>#include <stdlib.h>#include <string.h>int add(const char *server, int num1, int num2, int *sum);int main(int argc, char **argv){int result = -1;char server[128] = {0};int num1;int num2;int sum;if (argc < 4) {printf("usage: %s <ip:port> num1 num2 \n", argv[0]);exit(1);}strcpy(server,argv[1]);num1 = atoi(argv[2]);num2 = atoi(argv[3]);result = add(server, num1, num2, ∑);if (result != 0){printf("soap error, errcode=%d\n", result);}else{printf("%d + %d = %d\n", num1, num2, sum);}return 0;}f、到目前为止,自己的代码编写完毕,接下来编译服务端和客户端注意:编译的时候要把gsoap包里的源代码文件stdsoap2.c和stdsoap2.h拷贝到当前目录Makefile文件:GSOAP_ROOT = gsoap的解压路径/gsoapWSNAME = addCC = g++ -g -DWITH_NONAMESPACESINCLUDE = -I$(GSOAP_ROOT)SERVER_OBJS = soapC.o stdsoap2.o soapServer.o $(WSNAME)server.oCLIENT_OBJS = soapC.o stdsoap2.o soapClient.o $(WSNAME)client.o $(WSNAME)test.oall: serverserver: $(SERVER_OBJS)$(CC) $(INCLUDE) -o $(WSNAME)server $(SERVER_OBJS)client: $(CLIENT_OBJS)$(CC) $(INCLUDE) -o $(WSNAME)test $(CLIENT_OBJS)cl:rm -f *.o *.xml *.a *.wsdl *.nsmap soapH.h $(WSNAME)Stub.* $(WSNAME)server ns.xsd $(WSNAME)test然后执行make,即可生成addserver程序;执行make client,生成addtest程序g、运行程序执行./addserver 7777终端打印出:Socket connection successful: master socket = 3这是sever已经在前台运行起来了运行客户端./addtest ip地址:port num1 num2 返回加法的结果第一个简单的例子到此结束(2)使用wsdl2ha、建立一个新的目录,命名为weather命令:mkdir weatherb、利用gsoap 工具生成webserice 协义代码,wsdl2h从服务器下载头文件,soapcpp2相当于代码生成品,根据头文件生成相应的.c 文件和.nsmap 文件。
1、硬盘分区2、安装过程略3、安装完成,进入win7系统,使用easybcd软件建立centos6.5引导,选择NEOGrub并建立4、重启电脑,选择新建的centos6.5系统,并进入grub,配置centos6.5加载内核问题5、启动,出现错误6、此处/root=/dev/sdc4 应该是root=/dev/sdc4修改后,还有问题,提示路径错误,但分析后路径并没有问题7、解决此处问题,第4步骤应该可以顺利进行,但centos6.5并没有成功运行,在网上查阅centos系列安装双系统资料以上步骤并无问题,现在转回win7进入easybcd,添加linux/BSD 项,并将其设置称自动引导8、进入grub菜单,编辑——将root (hd1,2)改为root(hd0,3)成功进入centos6.5分析easybcd自动添加的引导命令发现它使用UUID,查阅UUID:Linux UUID的作用及意义原因1:它是真正的唯一标志符UUID为系统中的存储设备提供唯一的标识字符串,不管这个设备是什么类型的。
如果你在系统中添加了新的存储设备如硬盘,很可能会造成一些麻烦,比如说启动的时候因为找不到设备而失败,而使用UUID则不会有这样的问题。
原因2:设备名并非总是不变的自动分配的设备名称并非总是一致的,它们依赖于启动时内核加载模块的顺序。
如果你在插入了USB盘时启动了系统,而下次启动时又把它拔掉了,就有可能导致设备名分配不一致。
使用UUID对于挂载移动设备也非常有好处──例如我有一个24合一的读卡器,它支持各种各样的卡,而使用UUID总可以使同一块卡挂载在同一个地方。
此处可能是电脑重启之后,启动顺序改变,U盘和硬盘的盘符改变,导致命令不可用,。
Centos6.5启动报错Kernelpanic-notsyncing:Attempted。
某⼀天,开发同事突然告诉我服务器上⾃⼰的虚拟机连不上了,我登陆到服务器CAS管理界⾯,重启虚拟机后发现报错了问题:Kernel panic - not syncing: Attempted to kill init原因:这个问题的主要原因是系统的/lib64/libc-2.12.so和/lib64/libc.so.6⽂件丢失或者软链接错误解决办法: ⼀、修改启动模式,更改为光盘启动(各种环境⼤同⼩异) ⼆、⽤光盘启动救援模式,进⼊shell命令⾏:执⾏: chroot /mnt/sysinage 报错 三、拷贝/lib64/libc-2.12.so和/lib64/libc.so.6⽂件 四、执⾏: chroot /mnt/sysinage 不会报错,证明已经修复过程如下: ⼀、修改启动模式,更改为光盘启动(各种环境⼤同⼩异),我的服务器装的是CAS管理平台,配置如下(如果是其他的请⾃⾏百度) 1、挂载光盘 2、设置为启动引导后,重启虚拟机 ⼆、⽤光盘启动救援模式,进⼊shell命令⾏:执⾏: chroot /mnt/sysinage 报错 1、选择Rescue install system 后回车 2、选择语⾔:English(默认) 3、选择键盘类型:us(默认) 4、Setup Networking:NO(设置⽹络根据情况⽽定,⼀般来说⽹络没问题就不⽤设置了) 5、Rescue:Continue(继续)1. >选择Continue,则救援模式程序会⾃动查找系统中已有的⽂件系统,并把他们挂载到/mnt/sysimage⽬录下。
2. >选择Read-Only,则会以只读的⽅式挂载已有的⽂件系统。
3. >⼿动挂载则Skip。
4. >Advanced ,⾼级选项就不作说明了。
6、原系统挂载路径/mnt/sysimage,如果想获得原系统root环境,执⾏⾏命令:chroot /mnt/sysimage 即可 7、⼀直OK,到选择shell命令⾏,OK 8、因为/usr/lib64/libc-2.12.so & libc.so.6 -> libc-2.12.so 问题,执⾏chroot /mnt/sysinage会报错 三、拷贝/lib64/libc-2.12.so和/lib64/libc.so.6⽂件 cp /lib64/libc-2.12.so /mnt/sysimage/lib64/libc-2.12.so cp /lib64/libc.so.6 /mnt/sysimage/lib64/libc.so.6 注:如果拷贝失败:⽤强制拷贝cp -rf 命令 四、执⾏: chroot /mnt/sysinage 不会报错,证明已经修复 重新启动虚拟机,启动成功。
CentOS6.5 下编绎gSoap 相关问题及解决,开发环境准备:1,centos 为虚拟下安装,版本为32 位,(64 位同样可以,均测过,需注意的是红色部分内容)2,gSoap:gsoap_2.7tar.gz/~engelen/s oap.html载下来解压缩,按正常安装过程进行编译、安装。
# tar zxvf gsozp_2.7.12.tar.gz # cd gsoap_2.7.12 #./configure 或{./configure -p refix=/usr/local/gSOA P (指定安装路径) }# make # makeinstall问题: ../../ylwrap: line 111: yacc: command not found原因:没有安装:yacc(Yet Another Compiler Compiler)是Unix/Linux 上一个用来生成编译器的编译器 (编译器代码生成器)。
解决方案:sudo apt-get install flexbison(ubantu)yum install byacc(centos) 问题:gsoap-2.7/missing: line 46: flex: command not found决方法: yum install flex( 要重新运行./configure)(centos)apt-get install flex(ubantu) 问题:/usr/bin/ld: cannot find -ly 解决方法:yum install bison-devel(centos)apt-get install bison(ubantu) 问题:../../gsoap/stdsoap2.h:690:19: error: zlib.h: Nosuch file or directory 解决方法:缺少zlib,ubantu 下,apt-get installzlib-develcentos 下, yum installzlib-devel;问题:error: openssl/bio.h: No such file or directory解决方法:yum install openssl-devel(centos)ubantu 下:sudo apt-get install openssl 为了安装OpenSSL通常的库文件,首先使用以下命令来确定在Ubuntu 系统中可获得的库文件的应用版本:sudo apt-cache search libssl |grep SSL sudo apt-get installlibssl-dev至此基本可以了,面执行, make;makeinstall;+| You nowhave successfully built and installed gsoap. | ||| You can link your programs with -lgsoap++ for|| C++ projects created with soapcpp2 and you can link|| with -lgsoap for C projects generated with soapcpp2 -c |||| There are also corresponding libraries for SSL and|| zlib compression support (-lgsoapssl andlgsoapssl++)|| which require linking -lssl -lcrypto -lz | ||| Thanks for using gsoap.|| | | /projects/ gsoap2|+ + 出现此即安装成功;, 开发linux 下Web Service C/C++ 客户端这里,我们直接采用gSoap 工具包自带的wsdl2h 和soapcpp2 工具。
1.基本流程从Web 服务提供者处获取Web Service 的WSDL 文件,通常是一个URL ,如:/~engeien/caic.wsdi 当然也可以是个WSDL 形式的XML 文件。
2.使用gSoap 工具wsdl2h ,根据WSDL 生成一个C/C++ 语法结构的头文件。
如:wsdi2h -s -o calc.h /~engelen/calc.wsdl步将会得到一个头文件,如:caic.h 该步的目的:实现WSDL文件到.h 文件的数据映射。
3.使用gSoap 的预编译器soapcpp2 ,根据上一步得到的头文件来生成存根文件(soapStub.h )和客户端代码框架。
女口:soapcpp2 -i -x -C -L caic.h这一步将会得到几个.nsmap、.h和.cpp文件,如: calc.nsmap 、soapC.cpp 、soapH.h 、soapStub.h 、soapcaicProxy.cpp 、soapcaicProxy.h 该步的目的:生成相应的底层通信代码。
4.实现客户端例程在这一步可以简单地编写一个main 函数,如:(注意包含的头文件) #inciude "caic.nsmap"#inciude "soapcaicProxy.h"//该头文件已经包含了soapH.hint main(void){printf("verygood!/n");caicProxy service;{doubieresuit;if(service.pow(2, 10, resuit) ==SOAP_OK){std::cout ⁢⁢ "The vaiue of2八10 is "&It;< result &It;&It; std::endl;}}retum 0;}5 .用gcc编译客户端,生成可执行代码编译需要的文件有:第3步生成的所有文件、第4 步编写的main 函数所在的文件,以及gsoap 目录下的stdsoap2.h 和stdsoap2.cpp 文件共9个文件。
如如: calc.nsmap、soapC.cpp、soapH.h、soapStub.h、soapcalcProxy.cpp 、soapcalcProxy.h 、stdsoap2.cpp 、stdsoap2.h 、main.cpp 。
三、注意事项注1 : wsdl2h 的用法(WSDL/schema 解析和代码生成器)wsdl2h [opt] 头文件名WSDL 文件名或URL wsdl2h 常用选项-o 文件名,指定输出头文件-n 名空间前缀代替默认的ns -c 产生纯C代码,否则是C++ 代码-s 不要使用STL 代码-t 文件名,指定type map 文件,默认为typemap.dat -e 禁止为enum成员加上名空间前缀type map 文件用于指定SOAP/XML中的类型与C/C++ 之间的转换规则,比如在wsmap.dat 里写。
在本例中,使用的是: wsdl2h -s -o calc.h/~engelen/calc.wsdl 参数s 就表示生成不带STL 的C/C++ 语法结构的头文件calc.h 。
如果不用s就会生成带STL 的头文件,这样,在后边的编译中需要加入STL 的头stlvector.h ,位于: gsoap/import/ 目录下。
注2 :soapcpp2 的用法(编译和代码生成器)soapcpp2 [opt] 头文件名soapcpp2 常用选项-C 仅生成客户端代码-S 仅生成服务器端代码-L 不要产生soapClientLib.c 和soapStub.h 该文件就是直接由 wsdl2 生成的头文件转化而来,它详细定义了 WSDL 所描述的各项服务和数据结构。
它 是 soap 的存根文件,定义了由 wsdl2 生成的头文件里对应 的远程调用模型(RPC )o c.soapPlayerBeanPortBindingProxy. 和soapPlayerBeanPortBindingProxy.cpp 这两个文件是客户soapServerLib.c 文件 -c 产生纯 C 代码,否则是 C++ 代码(与头文件有关 ) -I 指定 import 路径(见上文) -x 不要产生XML 示例文件-i 生成C++封装(代理),客户端为xxxxProxy.h(.cpp) ,服务器端为 xxxxService.h(.cpp) 。
本例 中,使用的是: soapcpp2 -i -x -C -L calc.h 注 3 : gSoap 工具 wsdl2 和 soapcpp 所生成文件的简单分析( 1) wsdl2 生成的具有 C/C++ 语法结构的头文件, 其作用就是: 将 XML 语法结构的 WSDL 文件映射为 C/C++ 语法结构的 .h 文件; 并为下一步做准备。
( 2) soapcpp (采用参数: -i -x -C -L 生成的文件共有6个文件:PlayerBeanPortBinding.nsmap soapC.cpp 、soapH.h 、soapPlayerBeanPortBindingProxy.cppsoapPlayerBeanPortBindingProxy.h 、soapStub.h o a. PlayerBeanPortBinding.nsmap 文件该文件的作用: An XML-to-C/C++ namespace mapping table,即 WSDL 文件 与生成的客户端代码框架的一个名字空间的映射表。
b.端代码的一个简单封装,它封装了底层通信,并向外提供个很简单的界面,该界面展示了用户能够使用的所有服务(由WSDL 所描述)。
d. soapH.h 和soapC.cpp 这个两个文件是soap 的序列和反序列化代码,注4 :设置字符编码在利用gSoap 编写Web Service 客户端和服务器端的程序时,需要设置其编码方式。
接口为:soap_set_mode ,其实它是就是一个宏:#definesoap_set_mode(soap, n) ((soap)->imode |= (n), (soap)->omode |= (n)) 如果要设置为UTF8 可以这样调用:soap_set_mode(&soap, SOAP_C_UTFSTRING); 详细信息可参考该宏所在文件:stdsoap2.h。