gsoap环境搭建

来源:互联网 发布:js登录清除cookie 编辑:程序博客网 时间:2024/06/11 22:53
1 gsoap客户端
 1.1 搭建客户端环境
  现在客户端得到了一个.h的文件。至此,客户端现在共有三个文件,stdsoap2.c、stdsoap2.h、calc.h
  执行soapcpp2 -c -C calc.h
  生成soapC.c、soapH.h、soapClient.c、soapStub.h、calc.nsmap等文件。
  下面解释一下各个文件的作用:
  stdsoap2.c、stdsoap2.h:是最低层的文件,跟什么*.h没有关系,编译客户端和服务器都需要用到的
  soapC.c、soapH.h:是根据*.h生成的,客户端和服务端公用的部分
  soapClient.c:是根据*.h生成的,客户端特有的部分
  soapStub.h:是根据*.h生成的,包含客户端和服务端的结构体及函数声明
  calc.nsmap:是SOAP的命名空间,在自己写的客户端和服务端的程序里都需要添加
  soapH.h中已经包括了soapStub.h,所以只需要在自己的程序里包含该头文件即可
  到此,应该可以明白了,编译*.h文件生成客户端的环境,接下来就是自己实现客户端程序。
 1.2 编写客户端程序
  客户端程序中,首先,需要包含calc.nsmap、和soapH.h。
  然后,就可以调用soapStub.h声明的函数,跟调用本地的函数没有什么区别。
  重新敲写例程中的代码
  soap_destroy(&soap);  // Clean up deserialized class instances (note: this function will be renamed with option -n)
  soap_end(&soap);    // Clean up deserialized data (except class instances)and temporary data,并且会关闭slave socket
  soap_done(&soap);   // Reset and detach context: close master/slave sockets and remove callbacks
  
 1.3 编译客户端程序
  gcc -o calc_client calc_client.c stdsoap2.c soapC.c soapClient.c
  生成calc_client可执行文件
 1.4 运行
  ./calcclient add 1 2
  出现错误:
   SOAP 1.1 fault: SOAP-ENV:Client [no subcode]
   "Connection refused"
   Detail: connect failed in tcp_connect()
  错误出现的原因,是服务端没有指定端口。
  
2 gsoap服务端
 2.1 搭建服务端环境
  执行soapcpp2 -c -S calc.h
  生成soapC.c、soapH.h、soapServer.c、soapStub.h、calc.nsmap等文件。
 2.2 编写服务端程序
  vi calc_server.c
  首先,需要包含calc.nsmap、和soapH.h。
  然后,重新敲写例程中的代码
  soap_serve(&soap); // call the service operation dispatcher to handle request
  soap bind( struct soap *soap, char *host, int port,int backlog)
   //Returns master socket (backlog = max. queue size for requests).
   //When host==NULL: host is the machine on which the service runs
  soap_accept( struct soap *soap) //Returns slave socket,阻塞     
 2.3 编译服务端程序  
  gcc -o calc_server calc_server.c stdsoap2.c soapC.c soapServer.c
  这样直接报错calc_server.c:(.text+0x296): undefined reference to `pow'
  原因是pow这个库函数没有被定义
  所以,应该加上-lm,即gcc -o calc_server calc_server.c stdsoap2.c soapC.c soapServer.c -lm
  生成calc_server可执行文件
 2.4 运行
  ./calc_server 8080
0 0
原创粉丝点击