返回> 网站首页 

使用MFC调用gsoap方法-服务端

yoours2017-03-15 16:11:50 阅读 1771

简介一边听听音乐,一边写写文章。

一、创建头文件
test.h接口函数
//gsoap ns service name: ns__HelloWord3
//gsoap ns service namespace: http://localhost/ns__HelloWord3.wsdl
//gsoap ns service location: http://localhost
//gsoap ns service executable: ns__HelloWord3.cgi
//gsoap ns service encoding: encoded
//gsoap ns schema namespace: urn:ns__HelloWord3
int ns__HelloWord3(int num1, int num2, int result);

二、创建C++文件
soapcpp2.exe -S test.h -I D:\gsoap-2.8\gsoap\import
生成
soapC.cpp
soapH.h
  soapServer.cpp
  soapServerLib.cpp
  soapStub.h
  WebService1Soap.nsmap

三、加入到MFC工程中
将文件soapC.cpp、soapH.h、soapServer.cpp、soapStub.h、WebService1Soap.nsmap文件加入到工程中。
 将D:\gsoap-2.8\gsoap目录下stdsoap2.cpp、stdsoap2.h文件拷贝到工程中。

四、编写程序
int ns__HelloWord3(struct soap *soap, int num1, int num2, int result)
{
// 处理WebServices接收到的信息
return 0;
}

struct soap *mSoap = soap_new();
        mSoap->send_timeout = 2; //超时时间设置,不然会死等
mSoap->recv_timeout = 2; // 超时时间设置
mSoap->accept_timeout = 2;//超时时间设置
    int iSocket_master = soap_bind(mSoap, NULL, 6008, 100); //绑定到相应的IP地址和端口,NULL指本机
                                                                            //6008为端口号,最后一个参数不重要。
    if (iSocket_master< 0)
    {
        soap_print_fault(mSoap, stderr);
        return;
    }

    while(1)
    {
        int iSocket_slaver = soap_accept(mSoap);
        if (iSocket_slaver < 0)
        {
            soap_print_fault(mSoap, stderr);
            return;
        }

        soap_serve(mSoap);
        soap_end(mSoap);
    }
    soap_destroy(mSoap);  //清理反序列化的类实例  
        soap_end(mSoap);      //清理反序列化的数据 (除类实例) 和临时数据清理  
        soap_done(mSoap);     //重置和分离上下文: 关闭网络连接和删除回调  
    free(mSoap);

五、客户端和服务端写在一个程序中的方法
同时创建客户端和服务端CPP文件,修改.nsmap文件中的ns1、ns,将全局所有生成的cpp、h文件中的ns1改为ns即可。
微信小程序扫码登陆

文章评论

1771人参与,0条评论