快速业务通道

c++通道应用(服务器篇)

作者 佚名技术 来源 程序设计 浏览 发布时间 2012-06-29
unt=0;
    }
}

//定义创建通道反馈信息的函数
bool CPipeServer::ServerReplyInfo(CString StrReply)
{
 bool IsSuc=false;
 MyPipe=CreateNamedPipe(MyPipeName,
  PIPE_ACCESS_DUPLEX|FILE_FLAG_OVERLAPPED,
  PIPE_TYPE_BYTE|PIPE_WAIT,
  PIPE_UNLIMITED_INSTANCES,
  256,
  256,
  NULL, //NMPWAIT_USE_DEFAULT_WAIT,
  NULL);
 if (MyPipe!=INVALID_HANDLE_VALUE)
 {
  m_StrReply=StrReply;
  IsSuc=true;
  m_pWinThread=AfxBeginThread(ServerReadProc,(LPVOID) this);
 }
 return IsSuc;
}
//定义创建通道反馈信息的函数
//定义服务器退出时的操作
bool CPipeServer::ServerExit()
{
 bool IsSuc=false;
 HANDLE hFile;
 TCHAR buffer[256];
 DWORD dwNumberOfBytesWritten;
 WaitNamedPipe(MyPipeName,NMPWAIT_WAIT_FOREVER);
 hFile=CreateFile (MyPipeName,GENERIC_WRITE|GENERIC_READ,FILE_SHARE_READ|FILE_SHARE_WRIT E,
                     NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_ARCHIVE|FILE_FLAG_WRITE_THROUGH,NULL   );
 if(hFile==INVALID_HANDLE_VALUE)
 {
  return IsSuc;
 }
 _stprintf(buffer,_T("exit"));
 if (WriteFile(hFile,buffer,(_tcslen(buffer)+1)*sizeof (TCHAR),&dwNumberOfBytesWritten,NULL))
 {
  IsSuc=true;
 }
 CloseHandle(hFile);
 return IsSuc;
}
//定义服务器退出时的操作


//服务器读取并处理信息
UINT CPipeServer::ServerReadProc(LPVOID lParam)
{
 CPipeServer * pPipeServer=(CPipeServer*)lParam;
 DWORD dwNumberOfBytesRead,dwNumberOfBytesWritten;
 TCHAR buffer[256];
 while(ConnectNamedPipe(pPipeServer->MyPipe,NULL))
 {
  while(ReadFile(pPipeServer- >MyPipe,buffer,256*sizeof(TCHAR),&dwNumberOfBytesRead,NULL))
  {
   if(dwNumberOfBytesRead==0) break;
   if(_tcscmp(buffer,_T("exit"))==0)
   {
    DisconnectNamedPipe(pPipeServer->MyPipe);
                CloseHandle(pPipeServer- >MyPipe);
                return 0;
   }
   if(pPipeServer->m_pWndServer!=NULL)
   {
    ((CListBox*)pPipeServer->m_pWndServer- >GetDlgItem(IDC_LBCONTENT))->InsertString(0,buffer);
   }
   _tcscpy(buffer,pPipeServer->m_StrReply);
   WriteFile(pPipeServer->MyPipe,buffer,(_tcslen (buffer)+1)*sizeof(TCHAR),&dwNumberOfBytesWritten,NULL);
  }
  DisconnectNamedPipe(pPipeServer->MyPipe); //管道服务 器断开该实例的连接
 }
 CloseHandle(pPipeServer->MyPipe); //关闭实例句柄
    return 0;

}
//服务器读取并处理信息


//使用一个ID为IDC_BTNCONNECT的Button控件控制服务器开启/关 闭,并使用一个ID为IDC_BTNCONNECT的combo box的控件显示服务器端显示的信 息。
void CaccDlg::OnBnClickedBtnconnect()
{
  CPipeServer * pPipeServer=(CPipeServer*)this;
     CString MyCaption;
     GetDlgItem(IDC_BTNCONNECT)->GetWindowText (MyCaption);
     UINT i;
     if(MyCaption.Compare(_T("连接"))==0) {
         for(i=0;i<pPipeServer- >m_InstanceCount;i++){
    pPipeServer->m_pPipeServer->SethWndServer (this);
             pPipeServer->m_pPipeServer- >ServerReplyInfo(_T("服务器应答!"));
         }

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号