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

        在编程之前我安装了一些软件工具包,其中包括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的

 

你可能感兴趣的:(数据库,struct,application,SOAP,工具,login)