`
raojl
  • 浏览: 209695 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

一个 helloword 程序

阅读更多
#include "ace/Message_Queue.h"
#include "ace/Asynch_IO.h"
#include "ace/OS.h"
#include "ace/Proactor.h"
#include "ace/Asynch_Acceptor.h"
#include "ace/Addr.cpp"
#include "ace/Time_Value.cpp"
#include "ace/String_Base_Const.cpp"
#include "ace/OS_String.cpp"
#include "ace/Synch_Options.cpp"
//#include <mstcpip.h>

class HA_Proactive_Service : public ACE_Service_Handler
{
public:
~HA_Proactive_Service ()
{
if (this->handle () != ACE_INVALID_HANDLE)
ACE_OS::closesocket (this->handle ());
}

virtual void open (ACE_HANDLE h, ACE_Message_Block&)
{
this->handle (h);
if (this->reader_.open (*this) != 0 )
{
ACE_ERROR ((LM_ERROR, ACE_TEXT ("%p\n"),
ACE_TEXT ("HA_Proactive_Service reader open")));
delete this;
return;
}
if (this->writer_.open (*this) != 0 )
{
ACE_ERROR ((LM_ERROR, ACE_TEXT ("%p\n"),
ACE_TEXT ("HA_Proactive_Service write open")));
delete this;
return;
}
ACE_Message_Block *mb = new ACE_Message_Block(buffer,1024);
if (this->reader_.read (*mb, mb->space ()) != 0)
{
ACE_OS::printf("Begin read fail\n");
delete this;
return;
}

return;
}

//异步读完成后会调用此函数
virtual void handle_read_stream(const ACE_Asynch_Read_Stream::Result &result)
{
ACE_Message_Block &mb = result.message_block ();
if (!result.success () || result.bytes_transferred () == 0)
{
mb.release ();
delete this;
return;
}

mb.copy("");    //为字符串添加结束标记'\0'
ACE_OS::printf("rev:\t%s\n",mb.rd_ptr());

/* if(this->writer_.write(mb,mb.length()) !=0)
{
ACE_OS::printf("Begin read fail\n");
delete this;
return;
}*/

mb.release();


//实现一个WEB helloword程序~
ACE_Message_Block *bb = new ACE_Message_Block(1000);
bb->copy("HTTP/1.1 200 OK\r\n \
Date: Tue, 03 Mar 2009 09:27:26 GMT\r\n \
Server: BWS/1.0\r\n \
Content-Length: 50\r\n \
Content-Type: text/html\r\n \
Cache-Control: privateExpires: Tue, 03 Mar 2009 09:27:26 GMT\r\n \
Content-Encoding: text\r\n\r\n-hello world-<br> saving people ,saving the word");
if(this->writer_.write(*bb,bb->length()) !=0)
{
ACE_OS::printf("Begin read fail\n");
delete this;
return;
}


ACE_Message_Block *nmb = new ACE_Message_Block(buffer,1024);
if (this->reader_.read (*nmb, nmb->space ()) != 0)

return;
}

virtual void handle_write_stream(const ACE_Asynch_Write_Stream::Result &result)
{
ACE_Message_Block &mb = result.message_block ();
ACE_OS::printf("mb.release{ %s\n",mb.base());
mb.release();
return;
}

private:
ACE_Asynch_Read_Stream reader_;
ACE_Asynch_Write_Stream writer_;
char buffer[1024];
};


int main(int argc, char *argv[])
{
    int port=3000;
    ACE_Asynch_Acceptor<HA_Proactive_Service> acceptor;
   
    if (acceptor.open (ACE_INET_Addr (port)) == -1)
        return -1;

    while(true)
        ACE_Proactor::instance ()->handle_events ();
   
    return 0;
}
2
0
分享到:
评论

相关推荐

    第一个helloword

    helloword

    HelloWord:HelloWord程序

    你好字 HelloWord程序HelloWord程序

    工作流HelloWord程序

    在这个“工作流HelloWord程序”中,我们将会探讨微软的工作流框架——Windows Workflow Foundation (WWF),它是.NET Framework的一部分,提供了构建工作流应用程序的强大工具。 微软的Windows Workflow Foundation ...

    mybatis的helloword程序代码

    在本示例中,我们将探讨如何创建一个MyBatis的HelloWorld程序,从而熟悉其基本概念和工作流程。 首先,我们需要理解MyBatis的核心组成部分:SqlSessionFactory、SqlSession和Mapper接口。SqlSessionFactory是...

    tomacat6 + helloword程序

    【标题】"Tomcat6 + HelloWorld程序"是一个基础的Java Web应用示例,它结合了Apache Tomcat6服务器和一个简单的“Hello, World!”应用程序。这个组合通常用于教学目的,帮助初学者理解如何在Tomcat服务器上部署和...

    第一个Android程序 HelloWord

    在这个"第一个Android程序 HelloWord"中,我们将深入探讨Android应用程序的基础构建块。 1. **Android Studio**:Android应用程序开发的主要集成开发环境(IDE)是Android Studio,它基于IntelliJ IDEA。安装...

    EXTJS4.0的概述和HELLOWORD程序

    3. **创建组件**:学习如何创建一个简单的组件,例如一个包含"Hello, World!"文本的标签或按钮。 4. **布局管理**:理解EXTJS4.0的布局系统,如fit布局、border布局等,以及如何在容器中添加和排列组件。 5. **...

    Helloword.PHP

    本人写的第一个PHP程序,哈哈,很简单的一个Helloword

    helloword

    标题 "HelloWord" 可能是指一个初学者入门编程时经常遇到的第一个程序。在许多编程语言中,"Hello, World!" 是一个简单的示例,用于演示如何在控制台打印出一条消息。这个程序通常用于介绍基本的编程概念,如变量、...

    Android-10-拨号器.zip

    这个程序虽然被描述为“非常简单,一个HelloWord程序而已”,但其实它涉及到许多Android开发的关键知识点。在这个压缩包文件中,我们可以推测包含的源代码和资源文件可能是实现这一功能的基础。 1. **Android SDK和...

    入门第一课 java编写helloword!

    java 入门 几乎是所有学习java的编写的第一个java程序

    Gef入门程序-Helloword

    在本文中,我们将探讨如何通过一个简单的"HelloWord"程序来了解并使用Gef。 首先,让我们明确一下Gef的核心特性。Gef提供了一套丰富的自定义命令,用于简化调试过程,包括但不限于:内存检查、反汇编、堆栈浏览、...

    Struts2: HelloWord

    Struts2是一个基于MVC(Model-View-Controller)设计模式的Java Web应用程序框架,它在Web开发领域中被广泛使用。"HelloWorld"是学习任何新技术时的入门示例,Struts2也不例外。这个例子通常帮助开发者了解如何在...

    我的第一个Delphi 7程序

    这个"我的第一个Delphi 7程序"是一个非常适合初学者的起点,帮助他们了解如何使用Delphi 7来创建简单的应用程序。 首先,让我们来了解一下Delphi 7的核心特性: 1. **Object Pascal 语言**: Delphi 7 使用的是...

    microchip程序实例HELLOWORD.zip_microchip

    本压缩包“microchip程序实例HELLOWORD.zip”是针对Microchip微控制器的一个简单示例程序,名为“HELLOWORD”,它通常用于初学者入门或者教学,帮助开发者熟悉Microchip的开发环境和编程流程。 Microchip的微控制...

    HelloWord的Go程序

    下面是一个简单的Go程序的示例: ```go package main import "fmt" func main() { fmt.Println("Hello, World!") } ``` 上面的代码是一个最基本的Go程序。它包括一个`main`包,其中定义了一个`main`函数。`fmt`...

    完整EJB3.0第一个HelloWord,

    EJB3.0是EJB规范的一个重要版本,它引入了许多改进,使得EJB更加轻量级,易于使用,并减少了XML配置的需求。在EJB3.0中,开发人员可以利用注解(Annotations)来简化对象的声明,使其更加直观。 在EJB3.0的第一个...

    这是windowsPhone的helloword程序

    入门用的。聪明的不用下载。

    HelloWord.zip

    在HelloWord.zip文件中,我们可以看到"HelloWord"这个项目,这是一个经典的“Hello, World!”程序,是每个编程语言初学者的第一个例子,用于展示如何在控制台输出文本。 在Swift中,创建一个简单的"Hello, World!...

    iPhone的第一个程序HelloWorld开发图解

    "程序是一个经典的起点,对于初学者来说,它是了解编程环境和语言特性的第一步。本篇文章将详细讲解如何在iPhone上开发第一个"Hello, World!"程序,帮助你快速入门iOS应用开发。 首先,我们需要安装Xcode。Xcode是...

Global site tag (gtag.js) - Google Analytics