zoukankan      html  css  js  c++  java
  • ACE第二个练习:简单的Web服务

    #include "ace/SOCK_Acceptor.h"
    #include "ace/SOCK_Stream.h"
    #include "ace/Mem_Map.h"
    #include "ace/Auto_Ptr.h"
    
    extern char* get_url_pathname(ACE_SOCK_Stream* peer){
    	return "test.txt";
    }
    
    int ACE_TMAIN(int argc, ACE_TCHAR* argv[]) {
    
    	ACE_INET_Addr		server_addr;
    	ACE_SOCK_Acceptor	acceptor;
    	ACE_SOCK_Stream		peer;
    
    	if (server_addr.set(80) == -1) return 1;
    	if (acceptor.open(server_addr) == -1) return 1;
    
    	while (1)
    	{
    		if (acceptor.accept(peer) != -1) {
    
    			peer.disable(ACE_NONBLOCK);		// 确保阻塞的send_n
    			//ACE_Auto_Array_Ptr<char> pathname(get_url_pathname(&peer));			// ACE_Auto_Array_Ptr<X> 对象在析构时会释放其构造时的对应指针的内存
    			ACE_Mem_Map mapped_file(get_url_pathname(&peer)/*pathname.get()*/);
    
    			if (peer.send_n(mapped_file.addr(), mapped_file.size()) == -1) return 1;
    				peer.close();
    
    		}
    	}
    	
    	return acceptor.close() ==  -1 ? 1 : 0;
    }


    在工作目录添加"test.txt"文件,内容为:Hello World!

    编译运行,在浏览器中输入http://127.0.0.1:80

  • 相关阅读:
    H5 WebSocket
    JS call()、apply()、bind()
    JS中this指向问题
    JS GET POST请求
    php 常用get post http请求
    php 开启redis
    egret接入华为快应用6004
    PHP生成公私钥,签名和验签
    JS数组去重
    Oracle第九课
  • 原文地址:https://www.cnblogs.com/iapp/p/3631832.html
Copyright © 2011-2022 走看看