自己寫的ACE的Proactor例子

2021-04-02 13:35:52 字數 1821 閱讀 6440

/*

主要功能是,將客戶端傳送**到其他所有客戶端

*/#include "ace/os_main.h"

#include "ace/proactor.h"

#include "ace/asynch_acceptor.h"

#include "ace/inet_addr.h"

#include "ace/os.h"

#include "ace/sock_connector.h"

#include "ace/sock_acceptor.h"

#include "ace/sock_stream.h"

#include "ace/message_block.h"

#include "ace/containers.h"

#define listen_port 4200

ace_dllistwlist;

class receiver:public ace_service_handler

;receiver::receiver(void):handle_(ace_invalid_handle)

;receiver::~receiver(void)

;int receiver::init_read_stream(void)

return 0;

};void receiver::open(ace_handle new_handle,ace_message_block &message_block)

if(ws_.open(*this))

if (init_read_stream()==-1)

return;

wlist.insert_tail(&ws_);

this->addresses(remote_address,local_address);

remote_address.addr_to_string(peer_name,maxhostnamelen); 

ace_debug((lm_debug,ace_text("(%t)新連線:%s /n"),peer_name));

};void receiver::handle_read_stream(const ace_asynch_read_stream::result &result)

iter++;

}result.message_block().release();

if (init_read_stream()==-1)

return;

}else

iter++;

}delete this;}};

void receiver::handle_write_stream(const ace_asynch_write_stream::result &result)

;int ace_tmain(int argc,char *argv)

ace_proactor::instance()->proactor_run_event_loop();

return 0;

};現在有幾個問題:

1、如果記錄所有連線的客戶端?

2、proactor如何ace中ace_task結合?

3、本來想用stl的list記錄 ace_asynch_write_stream,但是ace_asynch_write_stream沒有實現==,所以使用迭代就用問題,所以只好用ace中的容器ace_dllist?

ace的好處就是跨平台,此程式在linux上編譯,就可以執行,但是會報ace_posix_aiocb_proactor::max number of aios=1024

看資料說linux上最大支援1024非同步io

linux編譯:

給自己寫的

多吃些粗糧.給別人比他們自己期許的更多,並且用心去做 熟記你喜歡的詩歌 不要輕信你聽到的每件事,不要花光你的所有,不要想睡多久就睡多久。無論何時說 我愛你 請真心實意。無論何時說 對不起 請看著對方的眼睛。相信一見鐘情。永遠不要忽視別人的夢想。深情熱烈地愛,也許你會受傷,但這是使人生完整的唯一方法。...

自己寫的SQLHelper

using system using system.collections.generic using system.text using system.data.sqlclient using system.configuration using system.data namespace dal...

自己寫的alarm cond

include include errors.h include include typedef struct alarm tagalarm t alarm t alarm list null pthread mutex t mutex pthread mutex initializer pthre...