首页 > 其他分享 >macos Cpp webserver的例子

macos Cpp webserver的例子

时间:2024-08-01 18:50:03浏览次数:15  
标签:std macos string soap cpp webserver Cpp ns hello

一 、hello.h

#include <iostream>
using namespace std;

int ns__hello(std::string* name,std::string &greeting);
~                                                       

二、helloclient.cpp

#include "soapH.h"
#include "ns.nsmap"
#include <stdio.h>
#include <stdlib.h>
/*
SOAP_FMAC5 int SOAP_FMAC6 soap_call_ns__hello(struct soap *soap, const char *soap_endpoint, const char *soap_action, std::string *name, std::string &greeting)
{       if (soap_send_ns__hello(soap, soap_endpoint, soap_action, name) || soap_recv_ns__hello(soap, greeting))
                return soap->error;
        return SOAP_OK;
}


*/

int hello(struct soap *hello_soap,const char* server,  std::string *name, std::string &greeting)
{
   int result=0;
//    soap_set_namespaces(&hello_soap, hello_namespaces);
    //该函数是客户端调用的主要函数,后面几个参数和hello.h中声明的一样,前面多了3个参数,函数名是接口函数名ns__hello前面加上soap_call_
    soap_call_ns__hello( hello_soap, server, "", name,greeting);
    if(hello_soap->error)
    {
        printf("soap error:%d,%s,%s\n", hello_soap->error, *soap_faultcode(hello_soap), *soap_faultstring(hello_soap) );
        result = hello_soap->error;
    }
    else  std::cout<<"hello:"<<greeting <<std::endl;
    return result;
}



int main(int argc, char **argv)
{
    struct soap *hello_soap = soap_new();
    //soap_init(&hello_soap);
    int result = -1;
    // 后续使用完成后需要释放内存
    char* server=soap_strdup(hello_soap,"http://localhost:9100");
    std::string  name= "luoxuehua "; 
    std::string  greeting;
    //result = hello(&hello_soap,server,&name,greeting);
    result = hello(hello_soap,server,&name,greeting);

    if (result != 0)
    {
        printf("soap err,errcode = %d\n", result);
    }
    else
   {
         std::cout<<"main:result: "<< greeting <<std::endl;
   }
    //soap_destroy(&hello_soap);
    //soap_end(&hello_soap);
    //soap_done(&hello_soap);
    soap_destroy(hello_soap);
    soap_end(hello_soap);
    soap_free(hello_soap);
    //free(server);
    return 0;
}

三、helloserver.cpp

#include "hello.h"
#include "ns.nsmap"
#include <iostream>
using namespace std;

int main(int argc, char* argv[])
{
 
SOAP_SOCKET m, s; /* sockets */
  struct soap soap;
  soap_init(&soap);
  if (argc < 2)
    soap_serve(&soap);  /* serve as CGI application */
  else
  {
    m = soap_bind(&soap, NULL, atoi(argv[1]), 1);
    if (!soap_valid_socket(m))
    {
      soap_print_fault(&soap, stderr);
      exit(1);
    }
    fprintf(stderr, "Socket connection successful: master socket = %d\n", m);
    for ( ; ; )
    {
      s = soap_accept(&soap);
      fprintf(stderr, "Socket connection successful: socket = %d\n", s);
      if (!soap_valid_socket(s))
      {
        soap_print_fault(&soap, stderr);
        exit(1);
      }
      soap_serve(&soap);
      soap_end(&soap);
    }
  }
  return 0;




}
//server端的实现函数与hello.h中声明的函数相同,但是多了一个当前的soap连接的参数
int  ns__hello(struct soap *soap,  std::string *name ,std::string &greeting)

{

    greeting ="Hello Webservice:";
   
    greeting.append(*name);
  return SOAP_OK;


}

四、编译

c++ -o  helloserver  helloserver.cpp soapC.cpp stdsoap2.cpp soapServer.cpp

c++ -o  helloclient helloclient.cpp soapC.cpp stdsoap2.cpp soapClient.cpp

 

标签:std,macos,string,soap,cpp,webserver,Cpp,ns,hello
From: https://www.cnblogs.com/luoxh-whn/p/18337271

相关文章

  • Apple Safari 17.6 - macOS 专属浏览器 (独立安装包下载)
    AppleSafari17.6-macOS专属浏览器(独立安装包下载)适用于macOSVentura和macOSMonterey的Safari浏览器17请访问原文链接:https://sysin.org/blog/apple-safari-17/,查看最新版。原创作品,转载请保留出处。之前Safari浏览器伴随macOS更新一起发布,需要系统更新才......
  • camke(12) 配置yaml-cpp 读取和保存数据
      编译库位置ros环境的yaml会干扰正常环境,CMakeLists要修改下手动指定build文件夹下编译的库  CMakeLists.txtcmake_minimum_required(VERSION3.5)project(YamlCppExample)#设置C++标准set(CMAKE_CXX_STANDARD11)#查找yaml-cpp包-ros环境被干扰使用错......
  • BUUCTF [GXYCTF2019]simple CPP
    buu上的一道z3题,记录一下z3奇怪的用法。首先扔进ida,打开主函数,非常混乱的算法,大概发现两个关键点:这里应该是对flag进行异或得到v6而这里的比较应该就是求解flag的关键,可以看出来有四个未知数,求解也是非常简单,z3直接求解即可:fromz3import*x,y,z,w=BitVecs("xyz......
  • Tenable Nessus 10.8.0 (macOS, Linux, Windows) 发布,新增功能概览
    TenableNessus10.8.0(macOS,Linux,Windows)下载-#1漏洞评估解决方案TenableNessus10.8.0(2024-07-30)发布Nessus试用版自动化安装程序,支持macOSSonoma、RHEL9和Ubuntu24.04请访问原文链接:https://sysin.org/blog/nessus-10/,查看最新版。原创作品,转载请保留......
  • macOS Monterey 12.7.6 (21H1320) Boot ISO 原版可引导镜像下载
    macOSMonterey12.7.6(21H1320)BootISO原版可引导镜像下载2024年7月30日凌晨,macOSSonoma14.6发布,本更新提供了重要的错误修复和安全更新,建议所有用户安装。同时带来了macOSVentura13.6.8和macOSMonterey12.7.6安全更新。本站下载的macOS软件包,既可以拖拽......
  • macOS Ventura 13.6.8 (22G820) Boot ISO 原版可引导镜像下载
    macOSVentura13.6.8(22G820)BootISO原版可引导镜像下载2024年7月30日凌晨,macOSSonoma14.6发布,本更新提供了重要的错误修复和安全更新,建议所有用户安装。同时带来了macOSVentura13.6.8和macOSMonterey12.7.6安全更新。macOSVentura13.6及更新版本,如无特......
  • macOS Sonoma 14.6 (23G80) 正式版 Boot ISO 原版可引导镜像下载
    macOSSonoma14.5(23F79)正式版BootISO原版可引导镜像下载2024年7月30日凌晨,macOSSonoma14.6发布,本更新提供了重要的错误修复和安全更新,建议所有用户安装。同时带来了macOSVentura13.6.8和macOSMonterey12.7.6安全更新。本站下载的macOS软件包,既可以拖......
  • macOS Sequoia 15.1 beta (24B5009l) Boot ISO 原版可引导镜像下载
    macOSSequoia15.1beta(24B5009l)BootISO原版可引导镜像下载iPhone镜像、Safari浏览器重大更新、备受瞩目的游戏和AppleIntelligence等众多全新功能令Mac使用体验再升级请访问原文链接:https://sysin.org/blog/macOS-Sequoia-boot-iso/,查看最新版。原创作品,转载请保......
  • macOS Monterey 12.7.6 (21H1320) 正式版发布,ISO、IPSW、PKG 下载
    macOSMonterey12.7.6(21H1320)正式版发布,ISO、IPSW、PKG下载2024年7月30日凌晨,macOSSonoma14.6发布,本更新提供了重要的错误修复和安全更新,建议所有用户安装。同时带来了macOSVentura13.6.8和macOSMonterey12.7.6安全更新。本站下载的macOS软件包,既可以拖......
  • macOS Ventura 13.6.8 (22G820) 正式版发布,ISO、IPSW、PKG 下载
    macOSVentura13.6.8(22G820)正式版发布,ISO、IPSW、PKG下载2024年7月30日凌晨,macOSSonoma14.6发布,本更新提供了重要的错误修复和安全更新,建议所有用户安装。同时带来了macOSVentura13.6.8和macOSMonterey12.7.6安全更新。macOSVentura13.6及更新版本,如无......