ACE的Select模型

这篇博客记录了作者首次使用ACE库实现Select模型的心得体验。服务端通过主线程监听新连接,另启线程处理数据,而客户端则专注于发送数据。文章详细描述了服务端的主线程和数据接收线程的职责。
摘要由CSDN通过智能技术生成


          虽然之前也在linux下写过select服务,但是用ACE还是第一次,把一些心得写下来。算是milestone吧。首先ACE相关库的下载安装我就不多废话,先说说程序的框架,该服务器分服务端和客户端。服务端的主线程负责监听新的连接,同时另起一个线程去处理数据。客户端很简单,就负责发送数据。

           服务端的主线程(负责新连接的监听):

         

#define PORT "1234"

void *pthread_function(void *pArg);                 //监听客户端发送的数据
int handle_data(ACE_SOCK_Stream stream);  //处理客户端stream的数据

ACE_Handle_Set handle_set;
std::map<std::string , ACE_SOCK_Stream> STRING_STREAM;//string - ACE_SOCK_Stream 名值对

//using namespace ACE;

int main(int argc , char *argv[])
{
	ACE_SOCK_Acceptor acceptor;
	ACE_SOCK_Stream local_stream , remote_stream;
	ACE_INET_Addr local_inet_addr , remote_inet_addr;

	local_inet_addr.set(atoi(PORT));
	acceptor.open(local_inet_addr , 1);         
        //1 代表设置接受者(acceptor)socket的SO_REUSEADDR,允许程序停止后重新启动,避免和前一次timeout的socket发生冲突
       
        handle_set
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值