/*
主要功能是,將客戶端傳送**到其他所有客戶端
*/#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...