返回> 网站首页
使用MFC调用gsoap方法-服务端
yoours2017-03-15 16:11:50
简介一边听听音乐,一边写写文章。
一、创建头文件
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即可。
文章评论
1975人参与,0条评论