您的位置:首页 > 其它

简单服务端和客户端的开发

2011-11-16 15:23 316 查看
在编程之前我安装了一些软件工具包,其中包括vc2005、gsoap、Flash builder 4.5等等,我利用vc2005开发服务端,FB来开发客户端,当然我对于这些工具以及环境还不是很熟悉,也是第一次来动手写关于这方面的,现在对于其中一些原理有了大概的了解了。
我首先动手写的是服务端,关于服务端:

在VC里我建了一个login的项目,在这个项目里最初只包含三个文件,然后我自建了一个名为ifun.h的头文件,在这个文件里我自己编写了声明了四个函数头(int ns__Login(char* strUserID, char* strPwd, wchar_t*& iLoginInfo);int ns__Add_ID(char* strUserID, char* strPwd,wchar_t*& iLoginInfo);int ns__Delete_ID(char* strUserID, wchar_t*&
iLoginInfo);int ns__Modify_ID(char* strUserID, char* strPwd, wchar_t*& iLoginInfo);),这四个函数就是我设计的要向客户端提供的服务函数,分别提供四种功能,然后我利用gsoap工具通过这个文件自动生成了一些与soap服务有关的文件,当然在这些文件里对于有些文件我做了一些修改(例如,在soapserver.h文件里我加入了int is_wsdl();int ser_send_wsdl();这两个函数,前一个用于判断是否请求wsdl,后一个用于发送wsdl文件,在soapserver.cpp文件里我借鉴着编写了上面声明的那四个函数的函数体),之后我又借鉴着陆续添加了一些文件到我的工程里面,这些文件有头文件:CharConvert.h、Database.h、MailSender.h、markup.h、publicFunction.h、stdsoap2.h以及源文件:Database.cpp、markup.cpp、publicFunction.cpp、stdsoap2.cpp。在这些文件里Database.h和Database.cpp用于提供数据库服务,最后我向stdafx.h文件里加入了一些宏定义、条件编译以及设计了主文件login.cpp,文件代码如下:

// login1.cpp : 定义控制台应用程序的入口点。

//

#include <vector>

#include "stdafx.h"

#include "Database.h"

#include "soapService.h"

#include "ns.nsmap"

#include "Markup.h"

#include "PublicFunction.h"

#include <stdio.h>

#include <string.h>

#include <iostream>

#include "MailSender.h"

#define PER_MINUTE (60000)

using namespace std;

int http_get(struct soap * soap);

CDataBase g_DataBase;

int _tmain(int argc, _TCHAR* argv[])

{

//连接数据库

if(!g_DataBase.OpenDatabase())

{

return 1;

}

Service calc;

calc.imode |= SOAP_C_UTFSTRING;

calc.omode |= SOAP_C_MBSTRING;

calc.fget = http_get;

if (!(argc < 2))

{

// serve as CGI application

calc.serve();

calc.destroy();

}

if (calc.run(9999))

{

calc.soap_stream_fault(std::cerr);

exit(-1);

}

return 0;

}

//能够远程读取wsdl文件

int http_get(struct soap * soap)

{

if (0 != strcmp(soap->path, "/ns.wsdl"))

{

return SOAP_GET_METHOD;

}

//读取硬盘wsdl文件

CString cstrWsdlName = CPublicFunction::GetWsdlName();

CString cstrWsdlPath = CPublicFunction::GetWsdlPath();

CString cstrWsdl = cstrWsdlPath + cstrWsdlName;

CMarkup xmlWsdl;

string strWsdl;

if(xmlWsdl.Load(cstrWsdl))

{

strWsdl = xmlWsdl.GetDoc();

cout << strWsdl.c_str() <<endl;

}

soap->http_content = "xml";

soap_response(soap, SOAP_FILE);

soap_send_raw(soap, strWsdl.c_str(), strWsdl.length());

soap_end_send(soap);

return SOAP_OK;

}

之后我便进行编译了,根据编译报错逐渐地向相应的文件中加入了一些文件包含,以及对于工程属性做了一些修改,之后便通过编译了,我的服务端便完成了。

最后我再来写我的客户端,对于客户端:

我在Flashbuilder里建了一个名为webserver的
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: