Socket模拟SOAP消息实现代码

来源:计算机等级考试    发布时间:2012-08-28    计算机等级考试视频    评论

  一个图书管理系统,是用三层结构实现的,客户端,服务器处理端和数据端。客户端提出请求,服务器端响应,同时将从数据服务器得来的结果以SOAP消息发送回客户端,客户端解析SOAP消息,将结果显示给用户。
  实现方法:
  好了,话不多说,现在开始进入正题:
  在接到客户端发来的请求后,我用ADO连接数据服务器并查询(我用的是Access),得到结果集Recordset以后,将结果集中有关图书信息格式化成XML文档,将其以SOAP消息形式发送回客户端
  //************************封装成SOAP消息发送回客户端************************//
  int MaxRows=0;//用来获得总的行数
  while(!pRs->EndOfFile)
  {
  MaxRows++;
  pRs->MoveNext();
  }
  pRs->MoveFirst();//这是必须的,现在记录已是最后一行了
  int nFields;
  nFields=pRs->Fields->GetCount(); //得到字段总数
  CMarkup xml;
  xml.SetDoc(/"//r//n/");
  xml.AddElem( /"RESULT/" );
  for(int j=0;j  {
  xml.AddChildElem( /"BOOK/" );
  xml.IntoElem();
  for(int k=0;k  {
   _bstr_t name=pRs->Fields->GetItem((long)k)->GetName();
   _bstr_t value=pRs->Fields->GetItem((long)k)->GetValue();
   xml.AddChildElem((char *)name,(char *)value);
  }
  xml.OutOfElem();
  pRs->MoveNext();
  }
  xml.Save(/"Temp.xml/");
  //MessageBox(/"xml文件生成成功/");
  CFile file;
  file.Open(/"Temp.xml/",CFile::modeRead | CFile::typeBinary);
  byte buf[64*1024];
  memset(buf,0,64*1024);
  file.ReadHuge(buf,file.GetLength());
  //用socket发送
  send(m_sockClient[i],(char *)buf,file.GetLength()+1,0);
  file.Close();

上一页12下一页

视频学习

我考网版权与免责声明

① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;

② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。

最近更新

社区交流

考试问答